ringabout
4adb79f7cb
a small fix
2023-12-08 07:29:36 +00:00
ringabout
cb172328ba
simple cases compile
2023-12-07 13:56:33 +00:00
ringabout
9af21cf719
progress
2023-12-07 12:53:06 +00:00
ringabout
f7bdec6f0d
progress
2023-12-06 14:25:34 +00:00
Juan M Gómez
ca577dbab1
C++: ptr fields now pulls the whole type if it's a member in nkDotExpr ( #22855 )
2023-10-23 08:59:14 +02:00
Andreas Rumpf
8990626ca9
NIR: progress ( #22817 )
...
Done:
- [x] Implement conversions to openArray/varargs.
- [x] Implement index/range checking.
2023-10-12 23:33:38 +02:00
Andreas Rumpf
816589b667
NIR: Nim intermediate representation ( #22777 )
...
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.
2023-10-11 17:44:14 +02:00
Andreas Rumpf
8f5b90f886
produce better code for object constructions and 'result' [backport] ( #22668 )
2023-09-11 18:48:20 +02:00
Juan M Gómez
8032f252b2
fixes #22669 constructor pragma doesnt init Nim default fields ( #22670 )
...
fixes #22669 constructor pragma doesnt init Nim default fields
---------
Co-authored-by: Andreas Rumpf <rumpf_a@web.de >
2023-09-10 12:45:36 +02:00
Amjad Ben Hedhili
8853fb0775
Make newSeqOfCap not initialize memory. ( #21842 )
...
It's used in `newSeqUninitialized`.
---------
Co-authored-by: ringabout <43030857+ringabout@users.noreply.github.com >
2023-09-09 21:11:45 +02:00
ringabout
5bd1afc3f9
fixes #17197 ; fixes #22560 ; fixes the dest of newSeqOfCap in refc ( #22594 )
2023-08-31 19:04:32 +08:00
Juan M Gómez
d7634c1bd4
fixes an issue where sometimes wasMoved produced bad codegen for cpp ( #22587 )
2023-08-30 07:22:36 +02:00
ringabout
469c9cfab4
unpublic the sons field of PType; the precursor to PType refactorings ( #22446 )
...
* unpublic the sons field of PType
* tiny fixes
* fixes an omittance
* fixes IC
* fixes
2023-08-11 22:18:24 +08:00
ringabout
faf1c91e6a
fixes move sideeffects issues [backport] ( #22439 )
...
* fixes move sideeffects issues [backport]
* fix openarray
* fixes openarray
2023-08-10 18:04:29 +02:00
ringabout
8523b543d6
getTemp and friends now return TLoc as requested (#22440 )
...
getTemp and friends now return `TLoc`
2023-08-10 14:17:15 +02:00
ringabout
a6610745d8
initLocExpr and friends now return TLoc (#22434 )
...
`initLocExpr` and friends now return TLoc
2023-08-10 07:57:34 +02:00
ringabout
91c3221855
simplify isAtom condition ( #22430 )
2023-08-09 20:57:13 +02:00
ringabout
10a6e4c236
clean up gc:arc or gc:orc in docs and in error messages ( #22408 )
...
* clean up gc:arc/orc in docs
* in error messages
2023-08-08 05:55:18 -04:00
ringabout
260b4236fc
use out parameters for getTemp ( #22399 )
2023-08-07 10:11:59 +02:00
ringabout
93ced31353
use strictdefs for compiler ( #22365 )
...
* wip; use strictdefs for compiler
* checkpoint
* complete the chores
* more fixes
* first phase cleanup
* Update compiler/bitsets.nim
* cleanup
2023-08-06 14:26:21 +02:00
Bung
6b913b4741
Revert "fix #22173 sink paramers not moved into closure (refc) (#22… ( #22376 )
...
Revert "fix #22173 `sink` paramers not moved into closure (refc) (#22359 )"
This reverts commit b40da812f7 .
2023-08-03 19:56:05 +02:00
Bung
b40da812f7
fix #22173 sink paramers not moved into closure (refc) ( #22359 )
...
* use genRefAssign when assign to sink string
* add test case
2023-08-02 14:08:51 +02:00
ringabout
f0f3904ff0
implement ensureMove ( #22339 )
...
* implement `ensureMove`
* use an additional flag
* improve some logics
* progress: fixes discard ensureMove
* forbids nested expressions
* improve error messages
* checkpoint
* fixes cursor
* ADD MORE TESTS
* fixes cursorinference again
* tiny cleanup
* improve error messages
* fixes docs
* implement comments add more tests
* fixes js
2023-07-29 10:57:03 +02:00
ringabout
7d9fe106ec
fixes #22268 ; fixes move codegen ( #22288 )
2023-07-19 12:57:58 +02:00
Andreas Rumpf
a15db5d60b
fixes #22175 ( #22229 )
2023-07-06 15:15:50 +02:00
ringabout
dfa0d2569e
alternative to #22219 ; adds a pointer wrapper for T destructor ( #22225 )
...
* alternative to #22219 ; adds a pointer wrapper for T destructor
* clean up and add comments
* Update compiler/ccgtypes.nim
* tidy up
* fixes comments
* fixes cpp
* fixes cpp
2023-07-06 11:14:42 +02:00
ringabout
d139d99946
fixes #19101 ; zero initialization union casts ( #22185 )
...
* zero initialization union casts
* cleans up and adds a test case for #19101
* uses nimZeroMem
2023-06-29 10:51:18 +02:00
Andreas Rumpf
e8d0f1c3ae
fixes #16331 ; aliasing of tuple construction within a single assignme… ( #22113 )
...
* fixes #16331 ; aliasing of tuple construction within a single assignment, great coding style
* added test case
2023-06-16 20:59:59 +02:00
ringabout
edb64bcff4
fixes explicit deref block ( #22093 )
...
fixes explicit deref
2023-06-15 09:56:58 +02:00
ringabout
64b27edd3a
make move use =wasMoved internally ( #22032 )
...
* make `move` use `=wasMoved` internally
* fixes tests
* fixes spawn finally
* fixes views
* rename to internalMove
* add a test case
2023-06-09 15:53:12 +02:00
ringabout
1133f20fe2
lift the =dup hook ( #21903 )
...
* fixes tests again
* remove helper functions
* fixes closures, owned refs
* final cleanup
2023-06-02 16:03:32 +02:00
ringabout
108410ac34
fixes fieldDefect loses enum type info in ORC; consistent with VM and refc ( #21954 )
...
fixes fieldDefect loses enum type info in ORC
2023-05-29 14:59:59 +02:00
heterodoxic
af3fd5a010
fixes #15428 by updating deep open array copy codegen ( #21935 )
...
* fix #15428
* add test
2023-05-27 15:27:42 +02:00
heterodoxic
6128ef53c5
fix #10964 by honoring pointer deref syntax if a reified openarray is used to get an array's length ( #21925 )
...
* fix #10964
* add test
2023-05-27 06:54:41 +02:00
Juan M Gómez
44f059c75e
implements allow byref to work in params #21873 ( #21875 )
2023-05-21 00:19:09 +02:00
Juan M Gómez
a852b2e9cf
refactor gettypedesc so it accepts its own kind instead of symkind ( #21867 )
2023-05-19 21:31:57 +02:00
heterodoxic
cf1ab2a30b
fix #21848 ( #21852 )
2023-05-15 21:16:49 +02:00
ringabout
71dc929ad7
bring #21802 back; fixes #21753 [backport] ( #21815 )
...
* bring #21802 back; fixes #21753 [backport]
* adds tests and multiple fixes
* add test cases
* refactor and remove startId
* fixes custom hooks and adds tests
* handle tyUncheckedArray better
2023-05-11 10:29:11 +02:00
ringabout
4533e894ad
adds an experimental mm:atomicArc switch ( #21798 )
2023-05-08 16:25:47 +02:00
ringabout
b562e1e6d8
implement =dup hook eliminating wasMoved and =copy pairs ( #21586 )
...
* import `=dup` hook eliminating `wasMoved` and `=copy` pairs
* add dup
* add a test for dup
* fixes documentation
* fixes signature
* resolve comments
* fixes tests
* fixes tests
* clean up
2023-05-06 21:36:57 +02:00
heterodoxic
a929e513fa
amends #21690 to fix broken Nim to C++ source line mappings ( #21784 )
...
resync fork
2023-05-04 20:09:53 +08:00
heterodoxic
91abf35442
improve C/C++ debug output readability (1/N) ( #21690 )
...
* hacky attempt to reconcile default explicit constructors with enforcement of brace initialization, instead of memsetting imported objects to 0
* improve C/C++ debug output readability (1/N)
2023-04-28 10:30:16 +02:00
ringabout
9cb06d357e
fixes #21540 ; deref block at transf phase to make injectdestructors function properly ( #21688 )
...
* fixes #21540 ; deref block at transf phase to make injectdestructors function properly
* add a test case
* add one more test
* fixes the type of block
* transform block
2023-04-19 11:55:54 +02:00
ringabout
1ed54b7718
fixes #21632 ; enforce deref for wasMoved in ORC ( #21647 )
...
fixes #21632 ; enforce deref for `wasMoved`
2023-04-12 10:45:45 +02:00
tersec
51ced0d684
remove seq[T] setLen undefined behavior ( #21582 )
...
remove seq[T] setLen UB
2023-03-29 12:00:00 +02:00
ringabout
38d299dfc0
fixes #20139 ; hash types based on its path relative to its package path ( #21274 ) [backport:1.6]
...
* fixes #20139 ; hash types based on its path relative its project
* add a test case
* fixes procs
* better implementation and test case
---------
Co-authored-by: Andreas Rumpf <rumpf_a@web.de >
2023-03-02 09:16:28 +01:00
Andreas Rumpf
50baf21eac
fixes #20422 ; emit nimPrepareStrMutationV2 for toOpenArray to keep th… ( #21459 )
...
fixes #20422 ; emit nimPrepareStrMutationV2 for toOpenArray to keep the abstraction of mutable strings which have immutable string literals
2023-03-02 08:36:02 +01:00
Andreas Rumpf
9fb4c2b3c7
fixes #21333 ; bad codegen for the at operator; [backport:1.6] ( #21344 )
2023-02-08 20:55:01 +01:00
Bung
c598d0b6ec
fix #15117 zero size array cause incorrect codegen for VCC compiler ( #21197 )
...
fix #15117
2022-12-30 00:50:12 +01:00
Bung
7a74c2dc3a
fix #14667 ( #21190 )
2022-12-28 08:28:48 +01:00