Commit Graph

50 Commits

Author SHA1 Message Date
Sebastien Bourdeauducq 3f73896477 remove a small amount of LLVM bloat
Also avoids libffi.dll dependency on Windows.
2021-12-08 17:41:34 +08:00
Sebastien Bourdeauducq 4526c28edb Merge branch 'windows' 2021-12-02 22:26:55 +08:00
Sebastien Bourdeauducq 25fc9db66d cargo: specify inkwell LLVM target explicitly
Windows LLVM linking otherwise breaks on the non-existing targets.
2021-12-02 22:24:33 +08:00
ychenfo dfd3548ed2 TypeVar and virtual support in Symbol Resolver (#99)
Add `TypeVar` and `virtual` support for Symbol Resolver in nac3artiq and nac3standalone

Reviewed-on: M-Labs/nac3#99
Co-authored-by: ychenfo <yc@m-labs.hk>
Co-committed-by: ychenfo <yc@m-labs.hk>
2021-12-01 22:44:53 +08:00
pca006132 4b17511b4a Merge branch 'master' into KernelInvariant 2021-11-27 21:29:27 +08:00
ychenfo 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
ychenfo c6f75c8bde nac3standalone: fix error message when no entry point is found 2021-11-22 14:52:52 +08:00
ychenfo aae9925014 nac3standalone: report when entry point run function cannot be found 2021-11-21 06:11:55 +08:00
pca006132 ba08deada6 nac3core: refactor codegen 2021-11-20 19:50:25 +08:00
Sebastien Bourdeauducq dba1a8b3d4 nac3standalone: link libm in demo runner 2021-11-11 19:44:18 +08:00
Sebastien Bourdeauducq bf7e2c295a integrate nac3parser 2021-11-03 17:11:00 +08:00
Sebastien Bourdeauducq 624dfe8cd1 upgrade to LLVM 12 2021-11-02 14:00:20 +08:00
pca006132 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
pca006132 1f5bea2448 nac3core/codegen: refactor according to #23 2021-10-16 22:17:36 +08:00
pca006132 c4259d14d1 fixed some clippy warnings 2021-10-16 18:08:13 +08:00
pca006132 11144301ca nac3artiq: added simple host value support 2021-10-06 16:07:42 +08:00
Sebastien Bourdeauducq 0cbe4778d2 nac3standalone: demonstrate scalar conversion functions in mandelbrot 2021-10-02 19:21:59 +08:00
Sebastien Bourdeauducq ba93931758 implement timeline functions for RISC-V (WIP) 2021-10-02 19:05:35 +08:00
pca006132 f0fdfe42cb nac3core: better impl of #24 2021-09-30 17:07:48 +08:00
pca006132 d4ed76d76e nac3core: implementing #24 2021-09-26 22:17:09 +08:00
pca006132 c4fbfeaca9 nac3standalone: added thread number arg 2021-09-23 20:02:56 +08:00
pca006132 105d605e6d nac3core: fix clippy warnings 2021-09-22 18:04:06 +08:00
pca006132 084efe92af nac3core: use string interning 2021-09-22 18:04:06 +08:00
Sebastien Bourdeauducq db14b4b635 demo: remove old obj files 2021-09-22 15:02:05 +08:00
Sebastien Bourdeauducq 8acb39f31f fix parallel compilation 2021-09-22 15:00:32 +08:00
Sebastien Bourdeauducq d561450bf5 demo: fix classes example 2021-09-22 14:57:24 +08:00
Sebastien Bourdeauducq 956cca6ac8 cleanup demos 2021-09-22 14:57:13 +08:00
pca006132 4a5f2d495e added time measurement to track performance 2021-09-22 14:45:56 +08:00
ychenfo e66693282c nac3core: change the place to unify constructor type for function body type check
add really basic field initialize check
2021-09-20 23:44:39 +08:00
pca006132 4939ff4dbd simple implementation of classes 2021-09-19 22:54:06 +08:00
ychenfo bf1769cef6 nac3standalone: more tests 2021-09-19 17:50:01 +08:00
ychenfo 2b74895b71 nac3standalone, nac3core: can use top level composer to compile and run mandelbrot 2021-09-19 16:19:49 +08:00
ychenfo 2ac3f9a176 nac3core: separate top level compoer to a new file 2021-09-12 05:10:10 +08:00
ychenfo 03b5e51822 nac3standalone: cleanup 2021-09-10 21:27:08 +08:00
ychenfo 87f25e1c5d nac3core: remove mutex on dyn symbol resolve 2021-09-08 19:27:32 +08:00
ychenfo 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
pca006132 2223c86d9b nac3standalone: compile multiple functions 2021-08-27 16:25:59 +08:00
pca006132 d81249cabe nac3standalone: enabled optimization and recorded time 2021-08-27 12:35:21 +08:00
pca006132 52dd792b3e nac3standalone: added return check 2021-08-27 11:39:36 +08:00
pca006132 a24e204824 type_inferencer: check defined identifiers during inference 2021-08-27 11:13:43 +08:00
ychenfo 862d205f67 remove self kind and extra primitive info in the return of top level composer constructor, adding some helper function for type annotation 2021-08-25 17:47:26 +08:00
pca006132 0608fd9659 fixed test and nac3standalone 2021-08-25 15:30:36 +08:00
pca006132 93270d7227 use forked version of rustpython
to implement Clone for AST nodes
2021-08-25 15:28:32 +08:00
ychenfo 32773c14e0 move top level related things to a separate module 2021-08-24 17:19:17 +08:00
ychenfo fb5b4697a9 fix rebase conflict and some test failure with unifier's error message 2021-08-23 10:34:11 +08:00
pca006132 957ceb74e4 nac3core/typecheck: added basic location information 2021-08-21 14:51:46 +08:00
pca006132 39545c0005 nac3standalone usable 2021-08-19 15:30:52 +08:00
Sebastien Bourdeauducq 703059adab nac3standalone: renames 2020-12-18 22:35:59 +08:00
Sebastien Bourdeauducq 947a528656 libnac3 -> nac3core 2020-12-18 10:18:21 +08:00
Sebastien Bourdeauducq 06d2fbd25c split off standalone compiler 2020-12-17 22:20:30 +08:00