summary refs log tree commit diff stats
path: root/lib/system
Commit message (Collapse)AuthorAgeFilesLines
* fixes #23556; typeinfo.extendSeq generates random values in ORC (#23557)ringabout2024-05-031-0/+6
| | | | | fixes #23556 It should somehow handle default fields in the future
* workaround #23435; real fix pending #23279 (#23436)ringabout2024-04-181-0/+2
| | | | | | | workaround #23435 related to https://github.com/nim-lang/Nim/issues/22852 see also #23279
* fixes #4695; closure iterators support for JS backend (#23493)ringabout2024-04-181-0/+4
| | | | | | | | | | | | | | | | | | | | | | | fixes #4695 ref https://github.com/nim-lang/Nim/pull/15818 Since `nkState` is only for the main loop state labels and `nkGotoState` is used only for dispatching the `:state` (since https://github.com/nim-lang/Nim/pull/7770), it's feasible to rewrite the loop body into a single case-based dispatcher, which enables support for JS, VM backend. `nkState` Node is replaced by a label and Node pair and `nkGotoState` is only used for intermediary processing. Backends only need to implement `nkBreakState` and `closureIterSetupExc` to support closure iterators. pending https://github.com/nim-lang/Nim/pull/23484 <del> I also observed some performance boost for C backend in the release mode (not in the danger mode though, I suppose the old implementation is optimized into computed goto in the danger mode) </del> allPathsAsgnResult???
* strictdefs for `repr` so that it can used for debugging purposes in t… ↵ringabout2024-04-151-2/+2
| | | | | (#23501) …he compiler
* fixes #23487; JS chckNilDisp is wrong (#23490)ringabout2024-04-131-1/+1
| | | | | fixes #23487 uses JSRef
* fixes #4299 #12492 #10849; lambda lifting for JS backend (#23484)ringabout2024-04-111-0/+12
| | | | | | | | fixes #4299 fixes #12492 fixes #10849 It binds `function` with `env`: `function.bind(:env)` to ease codegen for now
* fix atomicarc increment (#23427)Jaremy Creechley2024-03-251-1/+1
| | | | | | | | | | | | The fix to the atomicArc looks to use `-1` as the check value from the `SharedPtr` solution. However, it should be `-rcIncrement` since the refcount is bit shifted in ARC/ORC. I discovered this playing around doing atomic updates of refcounts in a user library. Related to https://github.com/nim-lang/Nim/issues/22711 @ringabout I believe you ported the sharedptr fix?
* ORC: added -d:nimOrcStats switch and related API (#23272)Andreas Rumpf2024-02-213-4/+46
|
* fixes #23304; uses `snprintf` instead of `sprintf` (#23322)ringabout2024-02-202-1/+4
| | | fixes #23304
* clean up goto exceptions; remove the setjmp.h dep (#23259)ringabout2024-01-272-34/+52
|
* Fix system.currentSourcePath() documentation [backport 2.0] (#23243)rockcavera2024-01-231-4/+5
| | | | | The documentation links for `parentDir()` and `getCurrentDir()` are broken as they are no longer part of `std/os`. Link changed to `std/private/ospaths2`.
* fixes #23139; Cannot get repr of range type of enum (#23164)ringabout2024-01-051-1/+1
| | | fixes #23139
* Deprecate asm stmt for js target (#23149)ASVIEST2024-01-022-85/+85
| | | | | | | | | | | | | | | | | | | | | | | why ? - We already have an emit that does the same thing - The name asm itself is a bit confusing, you might think it's an alias for asm.js or something else. - The asm keyword is used differently on different compiler targets (it makes it inexpressive). - Does anyone (other than some compiler libraries) use asm instead of emit ? If yes, it's a bit strange to use asm somewhere and emit somewhere. By making the asm keyword for js target deprecated, there would be even less use of the asm keyword for js target, reducing the amount of confusion. - New users might accidentally use a non-universal approach via the asm keyword instead of emit, and then when they learn about asm, try to figure out what the differences are. see https://forum.nim-lang.org/t/10821 --------- Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
* make `-d:debugHeapLinks` compile again (#23126)ringabout2023-12-241-4/+6
| | | | | I have made `realloc` absorb unused adjacent memory, which improves the performance. I'm investigating whether `deallocOsPages` can be used to improve memory comsumption.
* fixes #22852; real bugfix is tied to bug #22672 (#23013)Andreas Rumpf2023-11-301-1/+4
|
* enable vtable implementation for C++ and make it an experimental feature ↵ringabout2023-11-301-1/+1
| | | | | | | | | | | (#23004) follow up https://github.com/nim-lang/Nim/pull/22991 - [x] turning it into an experimental feature --------- Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
* rework the vtable implementation embedding the vtable array directly with ↵ringabout2023-11-281-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | new strictions on methods (#22991) **TODO** - [x] fixes changelog With the new option `nimPreviewVtables`, `methods` are confined in the same module where the type of the first parameter is defined - [x] make it opt in after CI checks its feasibility ## In the following-up PRs - [ ] in the following PRs, refactor code into a more efficient one - [ ] cpp needs special treatments since it cannot embed array in light of the preceding limits: ref https://github.com/nim-lang/Nim/pull/20977#discussion_r1035528927; we can support cpp backends with vtable implementations later on the comprise that uses indirect vtable access --------- Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
* reserve `sysFatal` for `Defect` (#22158)Jacek Sieka2023-11-062-8/+8
| | | | | | | | Per manual, `panics:on` affects _only_ `Defect`:s - thus `sysFatal` should not redirect any other exceptions. Also, when `sysFatal` is used in `nimPanics` mode, it should use regular exception handling pipeline to ensure exception hooks are called consistently for all raised defects.
* fixes #22860; suppress `AnyEnumConv` warning when iterating over set (#22904)ringabout2023-11-041-1/+4
| | | fixes #22860
* complete std prefixes for stdlib (#22887)ringabout2023-10-303-3/+3
| | | | follow up https://github.com/nim-lang/Nim/pull/22851 follow up https://github.com/nim-lang/Nim/pull/22873
* NIR: VM + refactorings (#22835)Andreas Rumpf2023-10-291-2/+2
|
* NIR: store sizes, alignments and offsets in the type graph; beginning… ↵Andreas Rumpf2023-10-162-1/+4
| | | | | (#22822) …s of a patent-pending new VM
* NIR: progress (#22817)Andreas Rumpf2023-10-121-0/+3
| | | | | | Done: - [x] Implement conversions to openArray/varargs. - [x] Implement index/range checking.
* NIR: Nim intermediate representation (#22777)Andreas Rumpf2023-10-115-11/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* fixes #22790; use cast suppress AnyEnumConv warnings for enums withou… ↵ringabout2023-10-111-4/+13
| | | | | | | (#22813) …t holes fixes #22790
* fixes #22711; Check atomicArc for atomic destroy race condition (#22788)ringabout2023-10-041-8/+15
| | | | | fixes #22711 Per @elcritch's awesome solution
* docs: add another switch example for nimscript (#22772)daylin2023-09-301-0/+1
| | | | | I couldn't find any documentation on the syntax for --hint:X:on|off with `nimscript` except in [this old forum post](https://forum.nim-lang.org/t/8526#55236).
* deprecates `newSeqUninitialized` replaced by `newSeqUninit` (#22739)ringabout2023-09-291-2/+0
| | | | | | | ref #19727 closes #22586 https://github.com/nim-lang/Nim/issues/22554 needs it to move on. `newSeqUnsafe` can be introduced later.
* ref #19727; implement `setLenUninit` for seqsv2 (#22767)ringabout2023-09-281-0/+24
| | | ref #19727
* Initialize `newString` in js [backport:1.6] (#22745)Amjad Ben Hedhili2023-09-231-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | ```nim echo newString(8) ``` results in: ``` D:\User\test.js:25 var code_33556944 = c_33556931.toString(16); ^ TypeError: Cannot read properties of undefined (reading 'toString') at toJSStr (D:\User\test.js:25:50) at rawEcho (D:\User\test.js:70:16) at Object.<anonymous> (D:\User\test.js:101:1) at Module._compile (node:internal/modules/cjs/loader:1095:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1147:10) at Module.load (node:internal/modules/cjs/loader:975:32) at Function.Module._load (node:internal/modules/cjs/loader:822:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) at node:internal/main/run_main_module:17:47 Node.js v17.0.1 Error: execution of an external program failed: '"C:\Program Files\nodejs\node.exe" --unhandled-rejections=strict D:\User\test.js' ```
* items, pairs and friends now use `unCheckedInc` (#22729)ringabout2023-09-201-26/+31
| | | | | | | | | | | | `{.push overflowChecks: off.}` works in backends. Though it could be implemented as a magic function. By inspecting the generated C code, the overflow check is eliminated in the debug or release mode. ![image](https://github.com/nim-lang/Nim/assets/43030857/49c3dbf4-675e-414a-b972-b91cf218c9f8) Likewise, the index checking is probably not needed.
* Fix `capacity` for const and shallow [backport] (#22705)Amjad Ben Hedhili2023-09-183-4/+4
|
* followup of #22568 (#22690)Amjad Ben Hedhili2023-09-141-24/+17
|
* Make capacity work with refc [backport] (#22697)Amjad Ben Hedhili2023-09-133-11/+26
| | | followup of #19771.
* Remove some unnecessary initialization in `seq` operations (#22677)Amjad Ben Hedhili2023-09-101-7/+35
| | | | | | | | | | | | * `PrepareSeqAdd` * `add` * `setLen` * `grow` Merge after #21842. --------- Co-authored-by: ringabout <43030857+ringabout@users.noreply.github.com>
* Make `newSeqOfCap` not initialize memory. (#21842)Amjad Ben Hedhili2023-09-092-2/+11
| | | | | | | It's used in `newSeqUninitialized`. --------- Co-authored-by: ringabout <43030857+ringabout@users.noreply.github.com>
* fixes #22664; guard against potential seqs self assignments (#22671)ringabout2023-09-081-0/+6
| | | fixes #22664
* Remove some unnecessary initialization in string operations (#22579)Amjad Ben Hedhili2023-09-071-37/+61
| | | | | | | | * `prepareAdd` * `toNimStr` * `setLengthStrV2` * `NimAsgnStrV2` * `prepareMutation` * Some cleanups
* newStringOfCap now won't initialize all elements anymore (#22568)ringabout2023-08-281-2/+3
| | | newStringOfCap nows won't initialize all elements anymore
* Markdown code blocks migration part 9 (#22506)Amjad Ben Hedhili2023-08-192-13/+13
| | | | | * Markdown code blocks migration part 9 * fix [skip ci]
* Fix `seq.capacity` (#22488)Amjad Ben Hedhili2023-08-171-2/+2
|
* fixes #22481; fixes `card` undefined misalignment behavior (#22484)ringabout2023-08-151-1/+3
| | | | | | | | | * fixes `card` undefined misalignment behavior * Update lib/system/sets.nim --------- Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
* Markdown code blocks migration part 8 (#22478)Andrey Makarov2023-08-155-47/+51
|
* clean up `gc:arc` or `gc:orc` in docs and in error messages (#22408)ringabout2023-08-083-9/+9
| | | | | * clean up gc:arc/orc in docs * in error messages
* Revert adding generic `V: Ordinal` parameter to `succ`, `pred`, `inc`, `dec` ↵konsumlamm2023-08-061-5/+5
| | | | | | | (#22328) * Use `int` in `digitsutils`, `dragonbox`, `schubfach` * Fix error message
* Make `repr(HSlice)` always available (#22332)konsumlamm2023-08-041-10/+0
| | | Co-authored-by: ringabout <43030857+ringabout@users.noreply.github.com>
* bump the devel version to 211 (#22356)ringabout2023-08-011-3/+3
|
* fixes #22262; fixes `-d:useMalloc` broken with `--mm:none` and `--threads ↵ringabout2023-08-011-1/+1
| | | | | | | on` (#22355) * fixes #22262; -d:useMalloc broken with --mm:none and threads on * fixes
* remove thread duplicated code (#22348)Bung2023-07-311-5/+0
|
* fixes #22256; fixes GC_disableOrc overflow (#22257)ringabout2023-07-111-1/+1
|