5337dbe23b
core/toplevel: add python-like error messages for class definition
2024-11-27 14:31:57 +08:00
f862c01412
core/toplevel: refactor composer
2024-11-27 14:31:53 +08:00
28f574282c
[core_derive] Ignore doctest in example
...
Causes linker errors for unknown reasons.
2024-11-22 00:00:05 +08:00
144f0922db
[core] coregen/types: Implement StructFields for NDArray
...
Also rename some fields to better align with their naming in numpy.
2024-11-21 14:27:00 +08:00
c58ce9c3a9
[core] codegen/types: Implement NDArray in terms of i8*
...
Better aligns with the future implementation of ndstrides.
2024-11-21 14:27:00 +08:00
f7e296da53
[core] irrt: Break IRRT into several impl files
...
Each IRRT file is now mapped to one Rust file.
2024-11-21 14:27:00 +08:00
b58c99369e
[core] irrt: Update some IRRT implementation
...
- Change CSlice to use `void*` for better pointer compatibility
- Only include impl *.hpp files in irrt.cpp
- Refactor typedef to using declaration
- Add missing ``// namespace`
2024-11-21 14:26:58 +08:00
1a535db558
[core] codegen: Add dtype to NDArrayType
...
We won't have this once NDArray is refactored to strided impl.
2024-11-20 15:35:57 +08:00
1ba2e287a6
[core] codegen: Add Self::llvm_type to all type abstractions
2024-11-20 15:35:57 +08:00
f95f979ad3
core/irrt: fix exception.hpp C++ castings
2024-11-20 15:35:57 +08:00
48e2148c0f
core/toplevel/helper: add {extract,create}_ndims
2024-11-20 15:35:57 +08:00
88e57f7120
[core_derive] Initial implementation
2024-11-20 15:35:55 +08:00
d7633c42bc
[core] codegen/types: Implement StructField{,s}
...
Loosely based on FieldTraversal by lyken.
2024-11-19 13:46:25 +08:00
a4f53b6e6b
[core] codegen: Refactor ProxyType and ProxyValue
...
Accepts generator+context object for generic type checking. Also
implements more default trait impl for easier delegation.
2024-11-19 13:46:25 +08:00
9d9ead211e
[core] Move Proxies to their own modules
2024-11-19 13:46:23 +08:00
26a1b85206
[core] codegen/classes: Remove Underlying type
...
This is confusing and we want a better abstraction than this.
2024-11-19 13:45:55 +08:00
2822074b2d
[meta] Cleanup from upgrading Rust version
...
- Remove rust_2024_edition warnings, since it wouldn't be released for
another 3 months
- Fix new clippy warnings
2024-11-19 13:43:57 +08:00
2cee760404
turn rust_2024_compatibility lints into warnings
2024-11-16 13:41:49 +08:00
2bd3f63991
boolop: terminate both branches with *_end_bb
2024-11-16 12:06:20 +08:00
979209a526
binop: expand not
operator as loglcal not
2024-11-08 17:12:01 +08:00
b6cd2a6993
[meta] Reorganize order of use declarations - Phase 3
2024-10-17 16:25:52 +08:00
a98f33e6d1
[meta] Reorganize order of use declarations - Phase 2
...
Some more rules:
- For module-level imports, prefer no prefix > super > crate.
- Use crate instead of super if super refers to the crate-level module
2024-10-17 15:57:33 +08:00
56c845aac4
[standalone] Add support for registering globals without type decl
2024-10-07 20:44:06 +08:00
65a12d9ab3
[core] Refactor registration of top-level variables
2024-10-07 17:05:48 +08:00
9c6685fa8f
[core] typecheck/function_check: Fix lookup of defined ids in scope
2024-10-07 16:51:37 +08:00
2bb788e4bb
[core] codegen/expr: Materialize implicit globals
...
Required for when globals are read without the use of a global
declaration.
2024-10-07 13:13:20 +08:00
42a2f243b5
[core] typecheck: Disallow redeclaration of var shadowing global
2024-10-07 13:11:00 +08:00
3ce2eddcdc
[core] typecheck/type_inferencer: Infer whether variables are global
2024-10-07 13:10:46 +08:00
51bf126a32
[core] typecheck/type_inferencer: Differentiate global symbols
...
Required for analyzing use of global symbols before global declaration.
2024-10-07 12:25:00 +08:00
1a197c67f6
[core] toplevel/composer: Reduce lock scope while analyzing function
2024-10-05 15:53:20 +08:00
e60e8e837f
[core] Add support for global statements
2024-10-04 13:24:27 +08:00
9fdbe9695d
[core] Add generator to SymbolResolver::get_symbol_value
...
Needed in a future commit.
2024-10-04 13:20:29 +08:00
8065e73598
[core] toplevel/composer: Add type analysis for global variables
2024-10-04 13:20:29 +08:00
192290889b
[core] Add IdentifierInfo
...
Keeps track of whether an identifier refers to a global or local
variable.
2024-10-04 13:20:24 +08:00
1407553a2f
[core] Implement parsing of global variables
...
Globals are now parsed into symbol resolver and top level definitions.
2024-10-04 13:18:29 +08:00
c7697606e1
[core] Add TopLevelDef::Variable
2024-10-04 13:09:25 +08:00
a43b59539c
[meta] Move variables declarations closer to where they are first used
2024-10-04 13:00:16 +08:00
fe06b2806f
[meta] Reorganize order of use declarations
...
Use declarations are now grouped into 4 groups:
- Declarations from the standard library
- Declarations from external crates
- Declarations from other crates in this project
- Declarations from within this module
Furthermore, all use declarations are grouped together to enhance
readability. super::super is also replaced by an equivalent crate::
declaration.
2024-10-04 12:52:01 +08:00
7f6c9a25ac
[meta] Update Cargo dependencies
2024-10-04 12:52:01 +08:00
f2c047ba57
artiq: support async rpcs
...
Co-authored-by: mwojcik <mw@m-labs.hk>
Co-committed-by: mwojcik <mw@m-labs.hk>
2024-09-13 12:12:13 +08:00
5e2e77a500
[meta] Bump inkwell to v0.5
2024-09-13 11:11:14 +08:00
7f629f1579
core: fix comment in unify_call
2024-09-11 15:46:19 +08:00
5640a793e2
core: allow np_full to take tuple shapes
2024-09-11 15:46:19 +08:00
5a34551905
allow the use of the LLVM shared library
...
Which in turns allows working around the incompatibility of the LLVM static library
with Rust link-args=-rdynamic, which produces binaries that either fail to link (OpenBSD)
or segfault on startup (Linux).
The year is 2024 and compiler toolchains are still a trash fire like this.
2024-09-09 11:17:31 +08:00
668ccb1c95
nac3core: expose inkwell and nac3parser
2024-09-06 11:06:26 +08:00
bd06155f34
irrt: compatibility with pre-C23 compilers
2024-09-05 18:54:55 +08:00
9c33c4209c
[core] Fix type of ndarray.element_type
...
Should be the element type of the NDArray itself, not the pointer to its
type.
2024-08-30 22:47:38 +08:00
71c3a65a31
[core] codegen/stmt: Fix obtaining return type of sret functions
2024-08-29 19:15:30 +08:00
8c540d1033
[core] codegen/stmt: Add more casts for boolean types
2024-08-29 16:36:32 +08:00
0cc60a3d33
[core] codegen/expr: Fix missing cast to i1
2024-08-29 16:36:32 +08:00
a59c26aa99
[artiq] Fix RPC of ndarrays from host
2024-08-29 16:08:45 +08:00
15ac00708a
[core] Use quoted include paths instead of angled brackets
...
This is preferred for user-defined headers.
2024-08-28 16:37:03 +08:00
22c4d25802
core/typecheck: add missing typecheck in matmul
2024-08-27 22:59:39 +08:00
9848795dcc
core/irrt: add exceptions and debug utils
2024-08-27 22:55:22 +08:00
58222feed4
core/irrt: split into headers
2024-08-27 22:55:22 +08:00
518f21d174
core/irrt: build.rs capture IR defined constants
2024-08-27 22:55:22 +08:00
e8e49684bf
core/irrt: build.rs capture IR defined types
2024-08-27 22:55:22 +08:00
b2900b4883
core/irrt: use +std=c++20 to compile
...
To explicitly set the C++ variant and avoid inconsistencies.
2024-08-27 22:55:22 +08:00
c6dade1394
core/irrt: reformat
2024-08-27 22:55:22 +08:00
d3b4c60d7f
core/irrt: comment build.rs & move irrt to nac3core/irrt
2024-08-27 22:55:22 +08:00
5b2b6db7ed
core: improve error messages
2024-08-26 18:37:55 +08:00
2c88924ff7
core: add support for simple polymorphism
2024-08-26 18:37:55 +08:00
a744b139ba
core: allow Call and AnnAssign in init block
2024-08-26 18:37:55 +08:00
2b2b2dbf8f
[core] Fix resolution of exception names in raise short form
...
Previous implementation fails as `resolver.get_identifier_def` in ARTIQ
would return the exception __init__ function rather than the class.
We fix this by limiting the exception class resolution to only include
raise statements, and to force the exception name to always be treated
as a class.
Fixes #501 .
2024-08-26 18:35:02 +08:00
d9f96dab33
[core] Add codegen_unreachable
2024-08-23 13:10:55 +08:00
4d80ba38b7
[core] codegen/expr: Implement comparison of tuples
2024-08-21 16:25:32 +08:00
33929bda24
[core] typecheck/typedef: Add support for tuple methods
2024-08-21 16:25:32 +08:00
a8e92212c0
[core] codegen/expr: Implement string equality
2024-08-21 16:25:32 +08:00
908271014a
[core] typecheck/magic_methods: Add equality methods to string
2024-08-21 16:25:32 +08:00
c407622f5c
[core] codegen/expr: Add compilation error for unsupported cmpop
2024-08-21 15:46:13 +08:00
d7952d0629
[core] codegen/expr: Fix assertions not generated for -O0
2024-08-21 15:36:54 +08:00
ca1395aed6
[core] codegen: Remove redundant return
2024-08-21 15:36:54 +08:00
7799aa4987
[meta] Do not specify rev in dependency version
2024-08-21 15:36:54 +08:00
76016a26ad
[meta] Apply clippy suggestions
2024-08-21 13:07:57 +08:00
2cf64d8608
apply clippy comment changes
2024-08-21 11:21:10 +08:00
b90cf2300b
core/fix: add missing lifetime in gen_for*
2024-08-21 11:05:30 +08:00
9e0601837a
core: Add compile-time feature to disable escape analysis
2024-08-14 09:29:48 +08:00
432c81a500
core: update insta after #489
2024-08-13 15:30:34 +08:00
8fd7216243
[core] toplevel/composer: Add lateinit_builtins
...
This is required for the new core_log and rtio_log functions, which take
a generic type as its parameter. However, in ARTIQ builtins are
initialized using one unifier and then actually used by another unifier.
lateinit_builtins workaround this issue by deferring the initialization
of functions requiring type variables until the actual unifier is ready.
2024-08-13 15:19:03 +08:00
a0614bad83
[core] codegen/expr: Make gen_string return StructValue
...
So that it is clear that the value itself is returned rather than a
pointer to the struct or its data.
2024-08-13 15:19:03 +08:00
5539d144ed
[core] Add CodeGenContext::build_in_bounds_gep_and_load
...
For safer accesses to `gep`-able values and faster fails.
2024-08-13 15:19:03 +08:00
973dc5041a
core/typecheck: Support tuple arg type in len()
2024-08-13 15:02:59 +08:00
12c4e1cf48
core/toplevel/builtins: Add support for len() on tuples
2024-08-13 15:02:59 +08:00
9b988647ed
core/toplevel/builtins: Extract len() into builtin function
2024-08-13 15:02:59 +08:00
35a7cecc12
core/typecheck: fix np_array ndmin bug
2024-08-13 12:50:04 +08:00
7e3d87f841
core/codegen: fix bug in call_ceil function
2024-08-07 16:40:55 +08:00
3ff6db1a29
core/codegen: Add va_start and va_end intrinsics
2024-08-06 11:48:42 +08:00
d7b806afb4
core/codegen: Implement support for va_info on supported architectures
2024-08-06 11:48:40 +08:00
fac60c3974
core/codegen: Handle vararg in function generation
2024-08-06 11:46:00 +08:00
f5fb504a15
core/codegen/expr: Implement vararg handling in gen_call
2024-08-06 11:46:00 +08:00
faa3bb97ad
core/typecheck/typedef: Add vararg to Unifier::stringify
2024-08-06 11:46:00 +08:00
6a64c9d1de
core/typecheck/typedef: Add is_vararg_ctx to TTuple
2024-08-06 11:45:54 +08:00
3dc8498202
core/typecheck/typedef: Handle vararg parameters in unify_call
2024-08-06 11:43:13 +08:00
cbf79c5e9c
core/typecheck/typedef: Add is_vararg to FuncArg, ConcreteFuncArg
2024-08-06 11:43:13 +08:00
b8aa17bf8c
core/toplevel/composer: Add parsing for vararg parameter
2024-08-06 10:52:24 +08:00
f5b998cd9c
core/codegen: Remove unnecessary mut from get_llvm*_type
2024-08-06 10:52:24 +08:00
3a8c385e01
core/typecheck: fix missing ExprKind::Asterisk in fix_assignment_target_context
2024-08-05 19:30:48 +08:00
221de4d06a
core/codegen: add missing comment
2024-08-05 19:30:48 +08:00
fb9fe8edf2
core: reimplement assignment type inference and codegen
...
- distinguish between setitem and getitem
- allow starred assignment targets, but the assigned value would be a tuple
- allow both [...] and (...) to be target lists
2024-08-05 19:30:48 +08:00
894083c6a3
core/codegen: refactor gen_{for,comprehension} to match on iter type
2024-08-05 19:30:48 +08:00