c-blake
beeacc86ff
Silence several Hint[Performance] warnings ( #23003 )
...
With `--mm:arc` one gets the "implicit copy; if possible, rearrange your
program's control flow" `Performance` warnings without these `move`s.
2023-11-29 22:36:47 +01:00
Jacek Sieka
58c44312af
reserve sysFatal for Defect ( #22158 )
...
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.
2023-11-06 07:57:29 +01:00
ringabout
4d11d0619d
complete std prefixes for stdlib ( #22887 )
...
follow up https://github.com/nim-lang/Nim/pull/22851
follow up https://github.com/nim-lang/Nim/pull/22873
2023-10-30 17:03:04 +01:00
Vindaar
2b1a671f1c
explicitly import using std/ in tempfiles.nim ( #22851 )
...
At least on modern Nim `tempfiles` is not usable if the user has
https://github.com/oprypin/nim-random installed, because the compiler
picks the nimble path over the stdlib path (apparently).
2023-10-20 19:04:01 +02:00
ringabout
e10878085e
fixes #22844 ; uses arrays to store holeyenums for iterations; much more efficient than sets and reasonable for holeyenums ( #22845 )
...
fixes #22844
2023-10-20 18:38:42 +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
ringabout
f4a623dadf
document atomicInc and atomicDec ( #22789 )
2023-10-04 16:00:41 +02:00
Juan Carlos
b60f15e0dc
copyFile with POSIX_FADV_SEQUENTIAL ( #22776 )
...
- Continuation of https://github.com/nim-lang/Nim/pull/22769
- See
https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_fadvise.html
- The code was already there in `std/posix` since years ago. 3 line
diff.
---------
Co-authored-by: Andreas Rumpf <rumpf_a@web.de >
2023-10-01 07:19:37 +02:00
Juan Carlos
a38e3dcb1f
copyFile with bufferSize instead of hardcoded value ( #22769 )
...
- `copyFile` allows to specify `bufferSize` instead of hardcoded wrong
value. Tiny diff.
# Performance
- 1200% Performance improvement.
# Check it yourself
Execute:
```bash
for i in $(seq 0 10); do
bs=$((1024*2**$i))
printf "%7s Kb\t" $bs
timeout --foreground -sINT 2 dd bs=$bs if=/dev/zero of=/dev/null 2>&1 | sed -n 's/.* \([0-9.,]* [GM]B\/s\)/\1/p'
done
```
(This script can be ported to PowerShell for Windows I guess, it works
in Windows MinGW Bash anyways).
# Stats
- Hardcoded `8192` or `8000` Kb bufferSize gives `5` GB/s.
- Setting `262144` Kb bufferSize gives `65` GB/s (script suggestion).
---------
Co-authored-by: Andreas Rumpf <rumpf_a@web.de >
2023-09-30 06:31:28 +02:00
metagn
51cb493b22
make parseEnum skip type aliases for enum type sym ( #22727 )
...
fixes #22726
2023-09-19 09:14:55 +02:00
litlighilit
741285b335
Update osfiles.nim, make moveFile consider permission on *nix ( #22719 )
...
see https://github.com/nim-lang/Nim/issues/22674
2023-09-18 13:15:17 +02:00
ringabout
63c2ea5566
fixes incorrect cint overflow in system ( #22718 )
...
fixes #22700
2023-09-18 10:00:46 +02:00
Andreas Rumpf
6b04d0395a
allow tuples and procs in 'toTask' + minor things ( #22530 )
2023-08-22 21:01:08 +02:00
Tomohiro
eb83d20d0d
Add staticFileExists and staticDirExists ( #22278 )
2023-08-18 16:47:47 +02:00
Nan Xiao
019b488e1f
fixes syncio document ( #22498 )
2023-08-17 20:26:33 +08:00
Andrey Makarov
a660c17d30
Markdown code blocks migration part 8 ( #22478 )
2023-08-15 06:27:36 +02:00
ringabout
7bb2462d06
fixes CI ( #22471 )
...
Revert "fixes bareExcept warnings; catch specific exceptions (#21119 )"
This reverts commit 9207d77848 .
2023-08-14 15:04:02 +08:00
Nan Xiao
9bf605cf98
fixes syncio document ( #22467 )
2023-08-14 08:44:50 +08:00
ringabout
9207d77848
fixes bareExcept warnings; catch specific exceptions ( #21119 )
...
* fixes bareExcept warnings; catch specific exceptions
* Update lib/pure/coro.nim
2023-08-13 00:02: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
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
norrath-hero-cn
e0396900ed
Prevent early destruction of gFuns, fixes AddressSanitizer: heap-use-after-free ( #22386 )
...
Prevent destruction of gFuns before callClosures
2023-08-05 19:38:32 +02:00
konsumlamm
e15e19308e
Revert adding generic V: Ordinal parameter to succ, pred, inc, dec ( #22328 )
...
* Use `int` in `digitsutils`, `dragonbox`, `schubfach`
* Fix error message
2023-08-06 00:38:46 +08:00
Tomohiro
db435a4a79
Fix searchExtPos so that it returns -1 when the path is not a file ext ( #22245 )
...
* Fix searchExtPos so that it returns -1 when the path is not a file ext
* fix comparision expression
* Remove splitDrive from searchExtPos
2023-08-04 20:00:43 +02:00
Eric N. Vander Weele
f1ac979184
Remove declared and not used variable in packedsets.bitincl ( #22334 )
...
When compiling code that uses PackedSet with warnings enabled, `var ret`
in `bitincl` emits a "XDeclaredButNotUsed" warning.
2023-07-27 23:07:03 +02:00
ringabout
4ce3a68e79
fixes #22163 ; use {.push warning[BareExcept]:off.} to override settings temporarily ( #21390 )
...
* use `{.push warning[BareExcept]:off.}` to override settings temporarily
* likewise, suppress expect
2023-06-27 08:03:52 +08:00
ringabout
a345cde26e
allow destructors to accept non var parameters; deprecate proc =destroy(x: var T) ( #22130 )
...
* make destructors accept non var parameters
* define nimAllowNonVarDestructor
* add a test case and a changelog
* update documentation and error messages
* deprecate destructors taking 'var T'
2023-06-21 08:51:03 +02:00
Etan Kissling
8bba04078c
avoid AnyEnumConv warning in genEnumCaseStmt ( #22061 )
...
When parsing enums from strings using `genEnumCaseStmt`, `AnyEnumConv`
warnings are generated due to conversion from integer value. It seems
possible meanwhile to refer to the actual `enum` value by symbol instead
of being required to do the conversion from `ord`, even when the `enum`
is defined in a `block`.
2023-06-10 14:45:00 +02:00
Antonis Geralis
a3bbb71240
Remove debug echo from with ( #22047 )
2023-06-08 22:52:24 +08:00
awr1
6514eaa8e0
Nested with blocks ( #22042 )
...
* Implemented with-nesting in underscoredCalls()
* Add tests for nested with
2023-06-08 08:02:57 +02:00
ringabout
b3e1892eb7
fixes #21977 ; add sideEffects to dirExists, fileExists and symlinkExists ( #21978 )
2023-06-01 08:03:17 +02:00
Juan M Gómez
e43a51fcf3
Implements: [C++] constructor pragma improvement ( fix #21921 ) ( #21916 )
...
* implements: [C++] constructor pragma improvement (fix #21921 )
t
* fix test so it doesnt use echo in globals
* Update compiler/ccgtypes.nim
* Update lib/std/private/dragonbox.nim
---------
Co-authored-by: Andreas Rumpf <rumpf_a@web.de >
2023-05-30 21:47:26 +02:00
Federico Ceratto
ef060e8184
Suggest files and paths modules ( #21950 )
2023-05-29 17:51:31 +02:00
metagn
4d6be458a0
js -r defines nodejs & program result undeclared if unavailable ( #21849 )
...
* js -r defines nodejs & program result undefined if unavailable
fixes #16985 , fixes #16074
* fix
* add changelog too
* minor word change
2023-05-24 17:55:09 +02:00
Andreas Rumpf
1314ea7516
tasks that support return values ( #21859 )
...
tasks.nim: Code cleanups and support expressions that produce a value
2023-05-17 06:02:11 +02:00
Andreas Rumpf
f4a9b258c3
isolation spec update; WIP ( #21843 )
...
* isolation spec update; WIP
* wip
* docs update, WIP
* progress
* Update doc/manual.md
2023-05-14 16:58:28 +02:00
Ecorous
871e4af6ef
add getDataDir to std/appdirs.nim ( #21754 )
...
* add getDataDir to std/appdirs.nim
* reuse `osappdirs.getDataDir`
* Update lib/std/appdirs.nim
---------
Co-authored-by: ringabout <43030857+ringabout@users.noreply.github.com >
2023-05-12 20:44:29 +08:00
metagn
02be212dae
clean up SOME pending/xxx/issue link comments ( #21826 )
...
* clean up SOME pending/xxx/issue link comments
* great
2023-05-11 10:23:52 +02:00
ringabout
deaf684375
fix #9423 followup #17594 : distinct generics now work in VM ( #21816 )
...
* fix #9423 distinct generics now work in vm
* fixes cpp tests
---------
Co-authored-by: Timothee Cour <timothee.cour2@gmail.com >
2023-05-10 11:06:14 +02:00
ringabout
afc30ca879
fixes #19863 ; move sha1, md5 to nimble packages for 2.0 ( #21702 )
...
* move sha1, md5 to nimble packages
* boot the compiler
* fixes tests
* build the documentation
* fixes docs
* lol, I forgot koch.nim
* add `nimHasChecksums` define
* clone checksums but maybe copying is better
* bump nimble hash
* use ChecksumsStableCommit
* fixes tests
* deprecate them
* fixes paths
* fixes koch
2023-05-02 10:49:17 +02:00
quantimnot
175a83c2de
refact: Remove assertion effect hiding workaround ( #21472 )
...
refact: Remove asseertion effect hiding workaround
There was a code comment to remove after bootstrapping with `nim >= 1.4.0`.
Co-authored-by: quantimnot <quantimnot@users.noreply.github.com >
Co-authored-by: ringabout <43030857+ringabout@users.noreply.github.com >
2023-04-21 18:06:20 +08:00
ringabout
f9477396a6
static link pthread correctly ( #21693 )
2023-04-20 17:35:15 +02:00
ringabout
135b677704
fixes nightlies regression ( #21689 )
...
* fixes nightlies regression
ref https://github.com/nim-lang/Nim/pull/21659
ref https://github.com/nim-lang/nightlies/actions/runs/4727252660/jobs/8387899690
> /home/runner/work/nightlies/nightlies/nim-1.9.3/lib/std/sysrand.nim(198, 12) Error: cannot evaluate at compile time: EINTR
Because EINTR is not a const on i386
* Update lib/std/sysrand.nim
2023-04-19 11:56:12 +02:00
metagn
b0a98cc01e
warn on set types bigger than max size, default to 0..255 for int literals ( #21659 )
...
* test implicitly huge set types
refs https://github.com/nim-lang/RFCs/issues/298
* oh my god
* boot at least
* don't error, fix remaining issues, no 2 len arrays
* fix runnable example
* test assuming 0..255 for int literal
* test refactor, add changelog, test
2023-04-17 20:55:22 +02:00
ringabout
512517c223
fixes #18146 ; fixes #19372 ; disable tlsEmulation on windows; static link pthreads with mingw ( #21668 )
...
* fixes #18146 ; disable tlsEmulation on windows; static link libwinthreads DLL
* whatever
2023-04-14 22:52:35 +02:00
metagn
f05387045d
int64/uint64 as bigint in JS ( #21613 )
...
* int64/uint64 as bigint in JS
* fix CI
* convert to compile option
* fix lie
* smaller diff, changelog entry
2023-04-11 21:20:20 +02:00
ringabout
5e016e4466
fixes #21638 ; fromJson should support empty objects ( #21641 )
...
* fixes #21638 ; `fromJson` should supports empty objects
* complete the logic
2023-04-11 06:38:30 +02:00
metagn
16bc546aea
remove useVersion ( #21626 )
...
test removing useVersion
2023-04-08 11:42:17 +02:00
tersec
612abda4f4
remove decades-deprecated Win32 API *A function support ( #21315 )
2023-03-02 05:51:54 +01:00