Commit Graph

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