Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | remove fauxMatch for tyFromExpr, remove tyProxy and tyUnknown aliases (#24018) | metagn | 2024-08-28 | 1 | -1/+1 |
| | | | | | | | | | | | | | | | | | | | | | updated version of #22193 After #22029 and the followups #23983 and #24005 which fixed issues with it, `tyFromExpr` no longer match any proc params in generic type bodies but delay all non-matching calls until the type is instantiated. Previously the mechanism `fauxMatch` was used to pretend that any failing match against `tyFromExpr` actually matched, but prevented the instantiation of the type until later. Since this mechanism is not needed anymore for `tyFromExpr`, it is now only used for `tyError` to prevent cascading errors and changed to a bool field for simplicity. A change in `semtypes` was also needed to prevent calling `fitNode` on default param values resolving to type `tyFromExpr` in generic procs for params with non-generic types, as this would try to coerce the expression into a concrete type when it can't be instantiated yet. The aliases `tyProxy` and `tyUnknown` for `tyError` and `tyFromExpr` are also removed for uniformity. | ||||
* | type refactor: part 4 (#23077) | Andreas Rumpf | 2023-12-15 | 1 | -1/+1 |
| | |||||
* | type graph refactor; part 3 (#23064) | Andreas Rumpf | 2023-12-14 | 1 | -1/+1 |
| | |||||
* | Types: Refactorings; step 1 (#23055) | Andreas Rumpf | 2023-12-12 | 1 | -8/+8 |
| | |||||
* | NIR: Nim intermediate representation (#22777) | Andreas Rumpf | 2023-10-11 | 1 | -0/+131 |
Theoretical Benefits / Plans: - Typed assembler-like language. - Allows for a CPS transformation. - Can replace the existing C backend by a new C backend. - Can replace the VM. - Can do more effective "not nil" checking and static array bounds checking. - Can be used instead of the DFA. - Easily translatable to LLVM. - Reasonably easy to produce native code from. - Tiny memory consumption. No pointers, no cry. **In very early stages of development.** Todo: - [x] Map Nim types to IR types. - [ ] Map Nim AST to IR instructions: - [x] Map bitsets to bitops. - [ ] Implement string cases. - [ ] Implement range and index checks. - [x] Implement `default(T)` builtin. - [x] Implement multi string concat. - [ ] Write some analysis passes. - [ ] Write a backend. - [x] Integrate into the compilation pipeline. |