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
ringabout
7146307823
fixes #22554 ; makes newSeqWith use newSeqUninit ( #22771 )
...
fixes #22554
2023-09-30 06:32:27 +02:00
ringabout
a8d55fdec7
deprecates newSeqUninitialized replaced by newSeqUninit ( #22739 )
...
ref #19727
closes #22586
https://github.com/nim-lang/Nim/issues/22554 needs it to move on.
`newSeqUnsafe` can be introduced later.
2023-09-29 09:38:51 +02:00
Amjad Ben Hedhili
f0bf94e531
Make newStringUninit available in the VM [backport] ( #22748 )
...
It's equivalent to `newString`.
2023-09-25 07:19:09 +02:00
SirOlaf
1b0447c208
Add magic toOpenArrayChar ( #22751 )
...
Should help with stuff like the checksums package which only takes
`openArray[char]`
Co-authored-by: SirOlaf <>
2023-09-24 20:47:56 +02:00
Amjad Ben Hedhili
a6c281bd1d
Fix newStringUninit not setting the '\0' terminator [backport] ( #22746 )
...
Causes problems when working with `cstring`s.
2023-09-23 17:08:24 +02:00
Amjad Ben Hedhili
b10a809274
Make newStringUninit available on the js backend [backport] ( #22743 )
2023-09-23 11:39:11 +02:00
Amjad Ben Hedhili
b542be1e7d
Fix capacity for const and shallow [backport] ( #22705 )
2023-09-18 22:57:30 +02:00
sls1005
dba9000609
Add descriptions and examples for rawProc and rawEnv ( #22710 )
...
Add descriptions for `rawProc` and `rawEnv`. See
<https://forum.nim-lang.org/t/10485 > for more informations.
---------
Co-authored-by: ringabout <43030857+ringabout@users.noreply.github.com >
Co-authored-by: Juan Carlos <juancarlospaco@gmail.com >
Co-authored-by: Andreas Rumpf <rumpf_a@web.de >
2023-09-18 16:42:43 +02:00
ringabout
63c2ea5566
fixes incorrect cint overflow in system ( #22718 )
...
fixes #22700
2023-09-18 10:00:46 +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
e53c66ef39
fixes #22555 ; implements newStringUninit ( #22572 )
...
* fixes newStringUninitialized; implement `newStringUninitialized`
* add a simple test case
* adds a changelog
* Update lib/system.nim
* Apply suggestions from code review
rename to newStringUninit
2023-08-29 13:29:42 +02:00
Amjad Ben Hedhili
d77ada5bdf
Markdown code blocks migration part 9 ( #22506 )
...
* Markdown code blocks migration part 9
* fix [skip ci]
2023-08-19 15:14:56 +02:00
Andrey Makarov
a660c17d30
Markdown code blocks migration part 8 ( #22478 )
2023-08-15 06:27:36 +02:00
ringabout
3f7e1d7daa
replace doAssert false with raiseAssert in lib, which works better with strictdefs ( #22458 )
2023-08-11 18:24:46 +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
konsumlamm
d37b620757
Make repr(HSlice) always available ( #22332 )
...
Co-authored-by: ringabout <43030857+ringabout@users.noreply.github.com >
2023-08-04 05:29:48 +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
11c8dfc9b3
fixes docs ( #22331 )
2023-07-26 10:04:34 +08:00
ringabout
7d9fe106ec
fixes #22268 ; fixes move codegen ( #22288 )
2023-07-19 12:57:58 +02:00
Juan Carlos
db1ce4ff12
Fix #22273 ( #22275 )
...
* Fix #22273
2023-07-14 12:40:57 +02:00
ringabout
1ad618d96c
clean up the documentation ( #22196 )
2023-07-02 22:36:05 +02:00
ringabout
e422b3c860
adds =destroy T support for strings and seqs ( #22167 )
...
* adds =destroy T support for strings and seqs
* fixes system
* fixes tests
2023-06-27 13:07:29 +02:00
ringabout
4546f5dfe5
adds T destructor for refs ( #22147 )
...
* adds T destructor for refs
* add `newRefdestructor`
* adds ref overload for destructors
* fixes config
2023-06-26 15:10:06 +02:00
ringabout
f524d60fa1
fixes #22123 ; Compiler bug with default initializer values and arrays ( #22128 )
2023-06-20 08:02:06 +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
0f3d6b5a52
small fixes for atomicArc ( #22017 )
...
* small fixes for atomicArc
* Update lib/system/arc.nim
2023-06-06 21:22:07 +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
ddce555998
improve wasMoved hooks; allow reset to use the overridden wasMoved hook ( #21831 )
...
* improve `wasMoved` hooks
* Because `wasMoved` is lifted
2023-05-12 15:24:14 +02:00
ringabout
3b9999b93c
adds documentation for =wasMoved and =dup hooks and small fixes ( #21827 )
...
* adds documentation for `=wasMoved` and `=dup` hooks and small fixes
* Update doc/destructors.md
* Update doc/destructors.md
---------
Co-authored-by: Andreas Rumpf <rumpf_a@web.de >
2023-05-11 19:38:27 +08:00
ringabout
055a00a6ef
make reset use the =destroy and wasMoved pair ( #21821 )
...
* make reset use the `=destroy` and `waMoved` pair
* fixes a space
* fixes `shrink` instead
* tiny fix
* fixes vm
* suppress the annotations since it breaks some important packages
2023-05-11 09:02:29 +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
metagn
380dafcc32
fix iterator equality + add test for proc equality + fix sameType ( #21707 )
...
* fix iterator equality + add test also for procs
fixes #21706
* all targets
* and isNil and repr
* separate overloads, fix sameType
* more restricted sameType?
* merge overloads again??
* remove sametype change for now
* fix sameType anyway (CI failure was not related)
---------
Co-authored-by: ringabout <43030857+ringabout@users.noreply.github.com >
2023-04-23 17:43:59 +08:00
metagn
1bb117cd7a
proc typeclass accounts for iterator, call conventions + nil fix + document typeclass AST (#21629 )
...
* test fix #16546 #16548 + another issue
* please don't tell me other packages do this
* fix CI + test typeclass callconv pragma
* better logic in parser
* docs and changelog
2023-04-11 09:23:41 +02:00
Tomohiro
6ec9c7f683
Fix example code of proc add*[T](x: var seq[T], y: sink openArray[T]) ( #21607 )
...
* Fix example code in system.nim
* Add example code to lib/system.nim
* Fix compile error
* Fix example code that can be unsafe
2023-04-03 05:15:14 +02:00
Century Systems
3b9e9fd7b2
Add support for NuttX RTOS. ( #21372 )
...
* Add support for NuttX RTOS.
Signed-off-by: Takeyoshi Kikuchi <kikuchi@centurysys.co.jp >
* lib: pure: asyncdispatch: assign to result.
Signed-off-by: Takeyoshi Kikuchi <kikuchi@centurysys.co.jp >
* lib: std: typedthreads: add support for parameters to adjust Thread Stack Size.
Like FreeRTOS/Zephyr, add support for following configurations.
-d:nimThreadStackSize=xxxxx
-d:nimThreadStackGuard=yyyy
Signed-off-by: Takeyoshi Kikuchi <kikuchi@centurysys.co.jp >
---------
Signed-off-by: Takeyoshi Kikuchi <kikuchi@centurysys.co.jp >
2023-02-16 13:47:52 +01:00
ringabout
ebd1c678be
fixes #21195 ; std/assertions continue to use sysFatal when nimPreviewSlimSystem is not defined ( #21196 )
...
* fixes #21195 ; `std/assertions` continue to use `sysFatal`
* try includes
* make `std/assertions` self-contained
* fixes tests
* fixes tests
2022-12-29 14:15:08 -05:00
ringabout
f7c203fb6c
remove legacy code ( #21134 )
...
* remove legacy code
* fixes
2022-12-26 13:20:05 +01:00
metagn
37daed3897
remove misleading slimsystem deprecated warnings ( #21156 )
...
refs #20967
2022-12-22 09:54:41 +01:00
Xavier Noria
e4aadcf1c1
Document that system:pop() may raise IndexDefect ( #21070 )
...
* Document system:pop() may raise IndexDefect
* Add backticks to KeyError
2022-12-13 08:47:01 +01:00
Andreas Rumpf
3812d91390
alternative, much simpler algorithm for strict func checking ( #21066 )
...
* alternative, much simpler algorithm for strict func checking
* forgot to git add new compiler module
* new spec is incredibly simple to describe
* fixes bigints regression
* typos
* closes #16305 ; closes #17387 ; closes #20863
2022-12-11 16:58:50 +01:00
ringabout
55373e65b4
unpublic arrayWith and rename it to nimArrayWith ( #21006 )
...
* unpublic arrayWith
* unindent
2022-12-04 15:39:14 +08:00
Bung
658b28dc57
tyInt tyUint fit target int bit width ( #20829 )
2022-12-01 13:34:00 +01:00
ringabout
09b7f90475
move system/atomics out of system; std/atomics should be preferred ( #20875 )
...
* move `system/atomics` out of system; `std/atomics` should be preferred
* add deprecation message
* fixes
* fixes
* fixes
* fixes more tests
2022-11-22 20:39:30 +01:00
Tanguy
19cc494b80
echo: only lock when threading is enabled ( #20890 )
2022-11-21 14:56:54 -05:00
ringabout
bce1f35f87
fixes strict effects ( #20885 )
...
* fixes strict effects
* remove nosideeffect
* Update lib/system/comparisons.nim
2022-11-21 14:55:13 -05:00
ringabout
e03a178bff
rename std/threads to std/typedthreads ( #20850 )
...
* rename `std/threads` to `std/oldthreads`
* fixes tests
* rename to `typedthreads`
* changelog
2022-11-16 16:35:20 +01:00
ringabout
06cd15663d
fixes ptr to cstring warnings[backport] ( #20848 )
...
* fix =#13790 ptr char (+friends) should not implicitly convert to cstring
* Apply suggestions from code review
* first round; compiles on windows
* nimPreviewSlimSystem
* conversion is unsafe, cast needed
* fixes more tests
* fixes asyncnet
* another try another error
* last one
* true
* one more
* why bugs didn't show at once
* add `nimPreviewCstringConversion` switch
* typo
* fixes ptr to cstring warnings[backport]
* add fixes
Co-authored-by: xflywind <43030857+xflywind@users.noreply.github.com >
2022-11-16 10:22:51 +01:00
ringabout
f11b7debf7
remove name field for ARC ( #20797 )
...
* remove name field for ARC
* mistake
* improvement
* better
* typo
* fixes a pre-existing bug
2022-11-09 16:22:55 +01:00
ringabout
7d15fdd375
implements display based subtype checking (6.4x faster without threads; 2.8x faster with threads) ( #20781 )
...
* WIP: fast 'of' operator based on the literature
* implement display based subtype checking
Co-authored-by: Araq <rumpf_a@web.de >
2022-11-08 13:08:01 +01:00