David Mak
13f06f3e29
core: Refactor VarMap to IndexMap
...
This is the only Map I can find that preserves insertion order while
also deduplicating elements by key.
2024-03-22 15:51:23 +08:00
David Mak
1b77e62901
core: Split numpy into codegen and toplevel
2024-03-22 15:07:28 +08:00
David Mak
c8866b1534
core/classes: Rename get_* functions to remove prefix
...
As suggested by Rust API Guidelines.
2024-03-21 15:46:10 +08:00
David Mak
c3b122acfc
core: Implement `ndarray.copy`
2024-03-07 14:59:13 +08:00
David Mak
ebf86cd134
core: Use size_t for accessing array elements
2024-03-07 14:59:13 +08:00
David Mak
cccd8f2d00
core: Fix ndarray_eye not preserving signness of offset
2024-03-07 14:59:13 +08:00
David Mak
96b7f29679
core: Implement `ndarray.fill`
2024-03-07 14:59:13 +08:00
David Mak
3d2abf73c8
core: Replace ndarray_init_dims IRRT impl with IR impl
...
Implementation of that function in IR allows for more flexibility in
terms of different integer type widths.
2024-03-07 14:59:13 +08:00
David Mak
b26cb2b360
core: Express member func def IDs as offsets from class def ID
2024-03-06 12:24:39 +08:00
David Mak
2317516cf6
core: Use tvars from ndarray for class definition
2024-03-04 23:58:02 +08:00
David Mak
77de24ef74
core: Use BTreeMap for type variable mapping
...
There have been multiple instances where I had the need to iterate over
type variables, only to discover that the traversal order is arbitrary.
This commit fixes that by adding SortedMapping, which utilizes BTreeMap
internally to guarantee a traversal order. All instances of VarMap are
now refactored to use this to ensure that type variables are iterated in
the order of its variable ID, which should be monotonically incremented
by the unifier.
2024-03-04 23:56:04 +08:00
David Mak
234a6bde2a
core: Use TObj for NDArray
2024-03-01 15:41:55 +08:00
David Mak
c3db6297d9
core: Add primitive definition-id list
...
So that we have a single ground truth for the definition IDs of
primitive types.
2024-03-01 11:29:10 +08:00
David Mak
82fdb02d13
core: Extract LLVM intrinsic functions to their functions
2024-02-23 15:41:06 +08:00
David Mak
49de81ef1e
core: Apply clippy suggestions
2024-02-23 15:41:06 +08:00
David Mak
8492503af2
core: Update cargo dependencies
2024-02-23 15:41:04 +08:00
David Mak
8470915809
core: Add NDArrayValue and helper functions
2024-01-25 15:51:39 +08:00
David Mak
148900302e
core: Add RangeValue and helper functions
2024-01-25 15:51:39 +08:00
David Mak
5ee08b585f
core: Add ListValue and helper functions
2024-01-25 15:51:39 +08:00
David Mak
4f9a0110c4
meta: Update insta snapshots
2024-01-17 09:49:50 +08:00
David Mak
12c0eed0a3
core: Fix compilation of tests
2024-01-17 09:49:49 +08:00
David Mak
140f8f8a08
core: Implement most ndarray-creation functions
2023-12-22 16:29:55 +08:00
David Mak
27fcf8926e
core: Implement ndarray constructor and numpy.empty
2023-12-22 16:29:54 +08:00
David Mak
c395472094
core: Initial infrastructure for ndarray
2023-12-21 15:39:46 +08:00
David Mak
bd792904f9
core: Add size_t to primitive store
...
Used for ndims in ndarray.
2023-12-21 15:20:31 +08:00
David Mak
9d64e606f4
core: Reject multiple literal bounds
...
This is currently broken due to how we handle function calls in the
unifier.
2023-12-18 10:04:25 +08:00
David Mak
8886964776
core: Remove redundant argument in type annotation parsing
2023-12-16 18:40:48 +08:00
David Mak
457d3b6cd7
core: Refactor generic constants to `Literal`
...
Better matches the syntax of `typing.Literal`.
2023-12-16 18:40:48 +08:00
David Mak
5f692debd8
core: Add PrimitiveStore into Unifier
...
This will be used during unification between a const generic variable
and a `Literal`.
2023-12-16 18:40:48 +08:00
David Mak
b47ac1b89b
core: Minor formatting cleanup
2023-12-15 17:46:44 +08:00
David Mak
a19f1065e3
meta: Refactor to use more let-else bindings
2023-12-12 16:31:14 +08:00
David Mak
32746c37be
core: Refactor to return errors by HashSet
2023-12-12 15:41:59 +08:00
David Mak
02933753ca
core: Apply clippy pedantic changes
2023-12-11 15:16:23 +08:00
David Mak
d304afd333
meta: Apply clippy suggested changes
2023-12-11 15:16:23 +08:00
David Mak
4dc5dbb856
meta: Replace equality assertion with assert_eq
...
Emits a more useful assertion message.
2023-12-11 15:16:23 +08:00
David Mak
fd9f66b8d9
meta: Remove redundant casts and brackets
2023-12-11 15:16:23 +08:00
David Mak
5182453bd9
meta: Remove redundant path prefixes
2023-12-11 15:16:23 +08:00
David Mak
031e660f18
core: Initial implementation for const generics
2023-12-08 18:02:11 +08:00
David Mak
b6dfcfcc38
core: Move some SymbolValue functions to symbol_resolver.rs
2023-12-08 18:00:51 +08:00
David Mak
68b97347b1
core: Infer builtins name list using builtin declaration list
2023-12-08 17:29:34 +08:00
David Mak
875d534de4
ast: Use `{filename}:{row}:{col}` for location output
2023-12-08 15:48:54 +08:00
David Mak
5c5620692f
core: Add np_{round,floor,ceil}
...
These functions are NumPy variants of round/floor/ceil, which returns
floats instead of ints.
2023-11-23 13:45:07 +08:00
David Mak
0af1e37e99
core: Prefix all NumPy/SciPy functions with np_/sp_spec
2023-11-23 13:35:23 +08:00
David Mak
10538b5296
core: Update insta snapshots
2023-11-09 13:00:27 +08:00
David Mak
08a5050f9a
core: Implement non-trivial builtin functions using IRRT
2023-11-06 12:57:23 +08:00
David Mak
fd787ca3f5
core: Remove trunc
...
The behavior of trunc is already implemented by casts and is therefore
redundant.
2023-11-04 13:35:53 +08:00
David Mak
4dbe07a0c0
core: Revert breaking changes to round-family functions
...
These functions should return ints as the math.* functions do instead of
following the convention of numpy.* functions.
2023-11-04 13:35:53 +08:00
David Mak
2e055e8ab1
core: Replace rint implementation with LLVM intrinsic
2023-11-04 13:35:53 +08:00
David Mak
c6b9aefe00
core: Fix int32-to-uint64 conversion
...
This conversion should be sign-extended.
2023-11-03 16:24:26 +08:00
David Mak
8ad09748d0
core: Fix conversion from float to unsigned types
...
These conversions also need to wraparound.
2023-11-03 16:24:26 +08:00