275 Commits

Author SHA1 Message Date
Agnish Ghosh
7681033a59
fix 2024-04-22 02:32:09 +05:30
Agnish Ghosh
b78fe3e61a
fix, tests: saturated on unsigned 2024-04-22 02:29:48 +05:30
Agnish Ghosh
0f5abee01d
init: adding saturated arithmetic as per llvm intrinsics format 2024-04-22 01:51:36 +05:30
Jacek Sieka
e9b227758e
fix 32-bit 2023-05-24 17:55:53 +02:00
Jacek Sieka
422b1540de
Merge branch 'intops' of github.com:status-im/nim-stew into intops 2023-05-24 17:43:17 +02:00
Jacek Sieka
1e2fbe1c87
test 2023-05-24 17:42:58 +02:00
Jacek Sieka
72d5338056
Merge branch 'master' into intops 2023-05-24 17:30:01 +02:00
diegomrsantos
003fe9f0c8
remove cast warnings (#186) 2023-05-23 11:05:55 +02:00
Jacek Sieka
266e9002f3
results: Add Opt/Result converters (#177)
Add `optError`, `optValue`, to convert back and forth between Opt and Result
These conversions end up being more common than others since "trivial"  success/fail-style API often use Opt while combining such API into combined operations tends to prefer richer error reporting.
2023-05-11 16:34:41 +03:00
Jacek Sieka
403b5de2a7
docs 2023-05-10 08:55:31 +02:00
Jacek Sieka
9ff33edb38
add references 2023-05-09 21:34:08 +02:00
Jacek Sieka
391c2e24b1
intops: core integer primitives
This, together with bitops2 and endians2, forms the core primitive
offering for working with integers as the computer sees them.

The focus of intops is to expose a number of common integer operations
typically used to build more complex abstractions such as bigints,
mp-ints etc while having access to the best performance the compiler and
cpu can offer.

There is more to do here, but this provides an outline of what this
module could look like.

Obviously, there are no exceptions or defects around - the point of
these utilities is to stay as close as possible to bare metal. They
could be used to implement such features however (similar to how
`system/integerops` works).
2023-05-09 21:28:35 +02:00
Jacek Sieka
111d939940
assign2: guard against self-assignment / overlapping openArray (#182) 2023-04-25 21:32:22 +02:00
diegomrsantos
8caa977199
remove HoleEnumConv warning (#184) 2023-04-25 18:16:50 +02:00
Jacek Sieka
9b985e8ea8
results: Add isOkOr, isErrOr (#176)
These two helpers complete `valueOr` and `errorOr` to cover `void` cases
where no value should be returned or `Result[void, E]` /
`Result[T, void]` is being used - they can be used for a convient
early-return style in side-effectful proc:s:

```nim
v.update().isOkOr:
  echo "update failed: ", error
```
2023-04-20 13:08:54 +02:00
jangko
67fdc87e25
remove travis and appveyor badge from readme.md 2023-04-14 21:51:50 +07:00
tersec
09c6bc676f
test both refc and ORC in post-1.6 Nim versions (#180) 2023-04-14 01:32:27 +00:00
tersec
763d54c1ba
use Nim 2.0 in CI (#175) 2023-04-07 15:12:07 +00:00
c-blake
e18f5a62af
Add API call from a (slight) future 1.6 branch with when guards to (#173)
* Add API call from a (slight) future 1.6 branch with when guards to
deactivate as per claim here

    https://github.com/status-im/nim-codex/pull/346#issuecomment-1432073926

that this (or something very near it) is where it belongs.

* I also cannot find any `shims/parse` import.  See discussion here:
  https://github.com/status-im/nim-stew/pull/173

So, rename module to match upstream Nim stdlib.

If anyone complains, re-create `parse.nim` that simply does import
& re-export parseutils & self-deprecates.
2023-02-21 16:29:07 -05:00
jangko
c52569abd5
add {.used.} to stddefects for nim 1.4 and above 2023-02-15 16:18:10 +07:00
jangko
6cc42beac7
reenable Defect raises for Nim 1.2 2023-02-14 21:56:10 +07:00
jangko
faabd40c30
reduce compiler warnings 2023-02-14 21:35:54 +07:00
Eugene Kabanov
407a598836
Fix Windows MAX_PATH limitation for absolute paths in io2 module. (#169)
* Fix Windows MAX_PATH limitation for absolute paths.

* Update algorithm to be more compatible with both directory and file paths.

* Add test.
2023-02-02 09:30:40 +01:00
Miran
11c8893cc6
switch CI to the supported version of ubuntu (#139)
* switch CI to the supported version of ubuntu

See https://github.com/actions/runner-images/issues/6002

* don't continue on error for Nim 1.6

* install openssl on macos for Nim devel

due to changes in https://github.com/nim-lang/Nim/pull/19814

---------

Co-authored-by: Jacek Sieka <jacek@status.im>
2023-02-01 13:19:07 +07:00
jangko
25aab846f1
upgrade github action to v3 2023-02-01 12:03:32 +07:00
Jacek Sieka
447b23d3bf
results: work around field access bugs (#167)
* results: work around field access bugs

See:

* https://github.com/nim-lang/Nim/issues/3770
* https://github.com/nim-lang/Nim/issues/20900

* comment fixes

* add test

* document test better
2023-01-20 15:32:51 +01:00
Jacek Sieka
19a6aea53b
results: document experimental error shortcut, and its gotchas (#168) 2023-01-20 15:32:34 +01:00
Jordan Hrycaj
609edbb5db
Updated unit tests using setup facility (#166)
why:
  Allows executing sub-tests independently.
2023-01-19 20:23:21 +00:00
Jacek Sieka
4e256104e1
Remove lock file (#165)
The lock file breaks devel testing - CI updates are needed as well as a
strategy for handling "nim important packages" builds (which build with
a version of Nim different from that in the lock file)
2023-01-19 15:23:48 +01:00
Jacek Sieka
32d6f43fff
byteutils: allow empty output buffers (#157)
* byteutils: allow empty output buffers

* er, closed
2023-01-19 08:19:26 +01:00
Jacek Sieka
ac602b5086
results: print none for empty Opt instances (#164)
* results: print `none` for empty Opt instances

* fix test too
2023-01-16 09:01:31 +01:00
Bung
f2f9685ec9
fix int set (#163) 2022-12-19 12:28:22 +01:00
Zahary Karadjov
f5846de7b2
Add objects.isDefaultValue 2022-12-15 17:11:53 +02:00
Jacek Sieka
7184d2424d
ci: bump checkout (#160) 2022-11-22 17:17:06 +01:00
Jacek Sieka
8e8d99f912
cancel PR builds (#159)
* cancel PR builds

* test

* test again
2022-11-22 13:47:01 +01:00
Jacek Sieka
aba51f1d29
normalise nimble file (#158)
* normalise nimble file

* loop args
2022-11-21 11:02:24 +01:00
Jacek Sieka
66c16920a6
update nimble build script (#155) 2022-11-19 07:50:31 +01:00
Jacek Sieka
d087c039c2
fix baseAddr, move to ptrops (#156)
* return `nil` for empty openArrays / avoid returning `16`
* move to `ptrops`, deprecate `ptr_arith` fully
2022-11-18 15:22:29 +02:00
Jacek Sieka
f295d00db9
remove stew/ranges (#152)
* deprecated for years
* relies on unavailable (shallowCopy) or broken (missing range checks)
features in nim
2022-11-18 12:52:55 +01:00
Jordan Hrycaj
665e1d1604
Fix issues #151 and #153 (#154) 2022-11-17 14:54:48 +00:00
Jacek Sieka
8a1b6ab4dc
results: work around void member codegen issue (#150) 2022-11-11 14:26:59 +01:00
Tanguy
989047dd76
Deprecate baseType (#148)
* Switch to compile time error for ARC / ORC

Co-authored-by: ringabout <43030857+ringabout@users.noreply.github.com>
2022-11-10 08:35:52 +01:00
Lorenzo Delgado
ba687c37a3
chore: fix 'there should not be high(value). use high(type)' deprecation (#147) 2022-11-09 14:48:38 +01:00
Tanguy
23da07c9b5
Fix compilation on devel (#146) 2022-10-29 21:48:51 +02:00
jangko
f2e58ba4c8
support multiple nim version re. nnkArgList issue 2022-09-22 08:16:32 +07:00
Jacek Sieka
0c379cf1d8
fix fromBytes call resolution (#140) 2022-09-12 14:29:03 +02:00
Jacek Sieka
142a408ca7
results: typo 2022-09-03 20:19:16 +02:00
Zahary Karadjov
018760954a
Add stew/saturation_arith 2022-08-18 23:57:27 +03:00
Jordan Hrycaj
1e86bd1ef3
Fixing overlapping intervals bug (#138)
why:
  did not properly merge
2022-08-16 14:21:01 +01:00
Eugene Kabanov
0476bcad1b
Cross-platform lockFile()/unlockFile() procedures for io2. (#116) 2022-08-05 19:58:34 +03:00