0206c3989a
core/ndstrides: implement ndarray indexing
...
The functionality for `...` and `np.newaxis` is there in IRRT, but there
is no implementation of them for @kernel Python expressions because of
#486 .
2024-10-17 13:56:35 +08:00
7327f979fb
core/irrt: rename NDIndex to NDIndexInt
...
Unfortunately the name `NDIndex` is used in later commits. Renaming this
typedef to `NDIndexInt` to avoid amending. `NDIndexInt` will be removed
anyway when ndarray strides is completed.
2024-10-17 13:52:27 +08:00
f07fe3b88e
core/irrt: add Slice and Range
...
Needed for implementing general ndarray indexing.
Currently IRRT slice and range have nothing to do with NAC3's slice
and range. The IRRT slice and range are currently there to implement
ndarray specific features. However, in the future their definitions may
be used to replace that of NAC3's. (NAC3's range is a [i32 x 3], IRRT's
range is a proper struct. NAC3 does not have a slice struct).
2024-10-17 13:52:27 +08:00
a8928d35e7
core/ndstrides: implement len(ndarray) & refactor len()
2024-10-17 13:44:43 +08:00
76a1c80081
core/ndstrides: implement np_{zeros,ones,full,empty}
2024-10-17 13:44:43 +08:00
8d4c2fd9f2
core/model: add util::gen_for_model
2024-10-17 13:44:43 +08:00
1c8cb84fcf
core/object: add ListObject and TupleObject
...
Needed for implementing other ndarray utils.
2024-10-17 13:44:43 +08:00
9d8358c0e7
core/ndstrides: implement ndarray iterator NDIter
...
A necessary utility to iterate through all elements in a possibly strided ndarray.
2024-10-17 13:44:43 +08:00
9d87975c01
core/ndstrides: introduce NDArray
...
NDArray with strides.
2024-10-17 13:44:43 +08:00
35d30703eb
core/irrt: fix exception.hpp C++ castings
2024-10-17 13:44:43 +08:00
b605006f58
core/toplevel/helper: add {extract,create}_ndims
2024-10-17 13:44:43 +08:00
5c18a32a28
core/object: introduce object
...
A small abstraction to simplify implementations.
2024-10-17 13:44:43 +08:00
0066c331d6
[core] introduce models
2024-10-17 13:44:43 +08:00
5839badadd
[standalone] Update globals.py with type-inferred global var
2024-10-07 20:44:08 +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
581b2f7bb2
[standalone] Add demo for global variables
2024-10-04 13:24:30 +08:00
746329ec5d
[standalone] Implement symbol resolution for globals
2024-10-04 13:24:30 +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
88d0ccbf69
[standalone] Explicit panic when encountering a compilation error
...
Otherwise scripts will continue to execute.
2024-10-04 13:00:16 +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
6c8382219f
msys2: get python via numpy dependencies
2024-09-30 14:27:30 +08:00
9274a7b96b
flake: update nixpkgs
2024-09-30 14:22:40 +08:00
d1c0fe2900
cargo: update dependencies
2024-09-30 14:14:43 +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
f3cc4702b9
[meta] Update dependencies
2024-09-13 11:11:14 +08:00
3e92c491f5
[standalone] Add tests creating ndarrays with tuple dims
2024-09-11 15:52:43 +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
abbaa506ad
[standalone] Remove redundant recreation of TargetMachine
2024-09-09 14:27:10 +08:00
f3dc02d646
[meta] Apply cargo fmt
2024-09-09 14:24:52 +08:00
ea217eaea1
[meta] Update pre-commit config
...
Directly invoke cargo using nix develop to avoid using the system cargo.
2024-09-09 14:24:38 +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
6098b1b853
fix previous commit
2024-09-06 11:32:08 +08:00
668ccb1c95
nac3core: expose inkwell and nac3parser
2024-09-06 11:06:26 +08:00
a3c624d69d
update all dependencies
2024-09-06 10:21:58 +08:00