4b17511b4a
Merge branch 'master' into KernelInvariant
2021-11-27 21:29:27 +08:00
4587088835
Constant Default Parameter Support ( #98 )
...
Add support for constant default parameter
Reviewed-on: M-Labs/nac3#98
Co-authored-by: ychenfo <yc@m-labs.hk>
Co-committed-by: ychenfo <yc@m-labs.hk>
2021-11-23 07:32:09 +08:00
49476d06e1
nac3core: clearer comments
2021-11-22 15:06:16 +08:00
664e02cec4
nac3core: fix clippy warning
2021-11-22 14:55:39 +08:00
a50df6560e
nac3core: fix handling on rigid typevar
2021-11-21 06:11:55 +08:00
a9635f0979
nac3core: top level use codegen official get_subst_key
2021-11-21 06:11:55 +08:00
c2706fa720
nac3core: fix polymorphic class method partial instantiation
2021-11-21 06:11:55 +08:00
f5ec103c82
nac3artiq: kernel invariant support
2021-11-20 21:15:15 +08:00
ba08deada6
nac3core: refactor codegen
2021-11-20 19:50:25 +08:00
8ab3ee9cce
nac3core: AugAssign support ( #82 )
2021-11-13 12:24:22 +08:00
b1e83a1fd4
nac3core: type check invariants
...
This rejects code that tries to assign to KernelInvariant fields and
methods.
2021-11-06 22:48:08 +08:00
b239806558
nac3core: adapt to ast change due to comment support
2021-11-04 15:02:51 +08:00
bf7e2c295a
integrate nac3parser
2021-11-03 17:11:00 +08:00
47f563908a
basic string support ( #30 )
2021-11-02 23:22:49 +08:00
083eacc268
with parallel/sequential support
...
Behavior of parallel and sequential:
Each function call (indirectly, can be inside a sequential block) within a parallel
block will update the end variable to the maximum now_mu in the block.
Each function call directly inside a parallel block will reset the timeline after
execution. A parallel block within a sequential block (or not within any block) will
set the timeline to the max now_mu within the block (and the outer max now_mu will also
be updated).
Implementation: We track the start and end separately.
- If there is a start variable, it indicates that we are directly inside a
parallel block and we have to reset the timeline after every function call.
- If there is a end variable, it indicates that we are (indirectly) inside a
parallel block, and we should update the max end value.
Note: requires testing, it is difficult to inspect the output IR
2021-10-31 23:54:37 +08:00
558c3f03ef
nac3core/codegen: list comprehension support
2021-10-24 16:53:43 +08:00
45673b0ecc
nac3core/codegen: cleanup
2021-10-24 16:53:43 +08:00
181607008d
nac3core/codegen: supports list iter
2021-10-24 14:39:50 +08:00
fb92b6d364
nac3core: supports range iterator
2021-10-23 23:53:36 +08:00
cc83bbc63a
nac3core/codegen: fix broken test
2021-10-17 13:07:45 +08:00
279f47f633
nac3core/codegen: avoid sending unifiers
...
Previously, we have to copy types from one unification table to another,
and make the table sendable. This requires cloning (processing) the
whole table 3 times per function call which is not efficient and uses
more memory than required when the unification table is large.
We now use a concrete type table to only copy the type we need. This
reduces the overhead as we only need to process the unification table
for once (when we do the function codegen), and reduces memory usage by
a bit (but not noticeable when the unification table is small, i.e. the
types are simple).
2021-10-17 13:02:18 +08:00
9850cbe313
nac3core/codegen: optimize for every function
...
This speeds up compilation and reduces memory usage.
2021-10-17 12:56:11 +08:00
1f5bea2448
nac3core/codegen: refactor according to #23
2021-10-16 22:17:36 +08:00
c4259d14d1
fixed some clippy warnings
2021-10-16 18:08:13 +08:00
11144301ca
nac3artiq: added simple host value support
2021-10-06 16:07:42 +08:00
f0fdfe42cb
nac3core: better impl of #24
2021-09-30 17:07:48 +08:00
d4ed76d76e
nac3core: implementing #24
2021-09-26 22:17:09 +08:00
693ac7d336
nac3core/toplevel: added personality symbol config
2021-09-25 21:44:00 +08:00
105d605e6d
nac3core: fix clippy warnings
2021-09-22 18:04:06 +08:00
7d48883583
fixed tests
2021-09-22 18:04:06 +08:00
084efe92af
nac3core: use string interning
2021-09-22 18:04:06 +08:00
891056631f
nac3core: use Arc to reduce copy
2021-09-22 18:04:06 +08:00
1b5ac3cd25
nac3core: do not alloc call if it is monomorphic
2021-09-22 18:04:06 +08:00
013e7cfc2a
codegen: support pass statement. Closes #10
2021-09-22 15:17:13 +08:00
4fe643f45b
allows function ending with a number
2021-09-22 14:45:42 +08:00
df6c9c8a35
fix #11
2021-09-21 11:29:51 +08:00
dd1be541b8
nac3core: allow class to have no __init__, function/method name with module path added to ensure uniqueness
2021-09-20 23:36:19 +08:00
35a94a8fc0
nac3core: fix broken test
2021-09-20 01:58:07 +08:00
4939ff4dbd
simple implementation of classes
2021-09-19 22:54:06 +08:00
2b74895b71
nac3standalone, nac3core: can use top level composer to compile and run mandelbrot
2021-09-19 16:19:49 +08:00
f5353419ac
codegen: minimized lock holding time
...
The previous way of holding the lock would prohibit multithread code
generation for llvm
2021-09-16 21:36:42 +08:00
2ac3f9a176
nac3core: separate top level compoer to a new file
2021-09-12 05:10:10 +08:00
1300b5ebdd
nac3core: clean up and format
2021-09-08 19:45:36 +08:00
87f25e1c5d
nac3core: remove mutex on dyn symbol resolve
2021-09-08 19:27:32 +08:00
55335fc05d
nac3core: top level simple type var handled
2021-09-08 02:27:12 +08:00
54b4572c5f
nac3core: allow interior mutability to dyn symbolresolver, add add_id_def to symbolresolver trait, remove primitive from top level def list
2021-09-06 19:23:04 +08:00
22a728833d
nac3core: fixed broken test
2021-08-27 16:50:53 +08:00
2223c86d9b
nac3standalone: compile multiple functions
2021-08-27 16:25:59 +08:00
8c1c7fcfc3
nac3core: fixed broken tests
2021-08-27 13:04:51 +08:00
bf4e0009c0
codegen: do not generate cont_bb if unreachable
2021-08-27 11:46:12 +08:00