Commit Graph

199 Commits

Author SHA1 Message Date
Dustin Brody fecc3cc5cb
prevent leakage of ptrops checks pragma disabling 2022-03-10 09:19:14 +00:00
Zahary Karadjov b87fd80b0f
Add tests for recordFields being used with empty objects 2022-03-03 17:36:28 +02:00
Zahary Karadjov bb705bf17b
Stop mixing Result and Exceptions in some of the KeyedQueue APIs 2022-01-23 21:18:03 +02:00
Jacek Sieka b464505b4d
oops 2022-01-13 22:21:46 +01:00
Jacek Sieka 9d0f1167ca
results: `[]` for void (#103)
mostly for consistency.. but it's used in nim-eth tests
2022-01-13 22:02:44 +01:00
Jacek Sieka 6ad35b876f result: expose value/error in errorOr/valueOr
* fix error type as well
2022-01-11 16:39:12 +02:00
Jacek Sieka d2ae2889e8
`Result` refresh (#96)
* `Result` refresh

* add full support for `Result[T, void]` (aka `Opt[T]` aka `Option[T]`)
* expand tests
* add `flatten`, `filter` of `Option` fame
* add `tryError` that raises a regular exception when result holds a
value
* fix `$` to print `ok`/`err` in lower-case, like the functions that
created the result
* add `orErr` that collapses all errors to a single value of a
potentially different type - useful when translating errors between
layers
* `capture` should work with `CatchableError`
* remove `Defect`-dependent tests

* Update stew/results.nim

* avoid redundant error message when converting error to string
* avoid multiple evaluation in `valueOr`
* add `unsafeError` to match `unsafeGet`
* let `valueOr` evaluate a block
* add `errorOr` to mirror `valueOr`
2022-01-10 00:22:09 +02:00
Jacek Sieka 17cd8c846f
add `to0xHex` which returns a `0x`-prefixed hex string 2022-01-06 17:05:47 +01:00
Michael Bradley 4750020a44
byteutils: drop import of assign2 since arrayops imports/exports it (#100)
Closes #99
2022-01-06 08:32:29 +01:00
Jacek Sieka 4e223b95a7
endians2: use copyMem instead of loop outside of vm (#95)
Looking at generated assembly, it turns out the optimizer is not smart
enough to get rid of the loop - use `copyMem` instead.

At least the compiler is smart enough to constant-propagate runtime
endian direction, resolving the review comment.

Also clarify why a minimum length is enfored - it could perhaps be
revisited, but that would leave a slightly odd API.

the `array` overloads are actually unnecessary with an optimizing
compiler - as long as it can prove the length, any extra checks will go
away on their own

also add `initCopyFrom`

* document optimizations
2022-01-03 14:53:01 +01:00
Ștefan Talpalaru 48666d9c65
CI: all Nim versions are supported (#98) 2022-01-02 06:49:51 +01:00
Zahary Karadjov 2f9c61f485
Add hashes.hashAllFields 2021-12-03 13:30:06 +02:00
Zahary Karadjov a98ec09b0b
Add sets.keepItIf 2021-12-03 13:28:59 +02:00
Zahary Karadjov 7ab114e159
Add templateutils.evalTemplateParamOnce 2021-12-03 13:28:54 +02:00
Jacek Sieka 8a405309c6
enable styleCheck:usages (#93) 2021-12-02 16:24:02 +01:00
Jordan Hrycaj 3b9e906a18
Merge pull request #92 from status-im/jordan/fix-SortedSet-naming
Fix canonical name
2021-11-29 09:58:55 +00:00
Jordan Hrycaj f97e953c26
Fix canonical name
why:
  The name clear() is commonly used as reset function.
2021-11-25 17:40:29 +00:00
Ștefan Talpalaru a61869c256
Merge pull request #87 from status-im/ci_multi_nim
CI: test with multiple Nim branches
2021-11-16 15:57:17 +01:00
Ștefan Talpalaru fdd06d8a3e
CI: test with multiple Nim branches
daily CI job
2021-11-16 12:24:13 +01:00
cheatfate a587b7a8eb Fix generic sandwich problem. 2021-11-09 20:15:15 +02:00
Jordan Hrycaj b002c1fad0
New data structures - SortedSet and KeyedQueue
See the modules' documentation for more details
2021-11-04 13:17:50 +02:00
Zahary Karadjov 478cc6efde Add object.isZeroMemory 2021-09-13 19:02:32 +03:00
Jacek Sieka 3c91b8694e
add void tests (#84) 2021-07-07 10:12:20 +02:00
jangko e10da4a90e
fixes bug in base64 decoder when decoding byte sequence
the decoder accepts string or byte sequence but assume
the inner type is a char, now fixed
2021-06-17 08:16:56 +07:00
Ștefan Talpalaru 70680e2af2
CI: refactor Nim compiler caching (#82) 2021-06-01 08:27:27 +02:00
Jacek Sieka 7fb220d1e8
assign2: string support (#81) 2021-04-16 15:23:36 +02:00
Jacek Sieka 7d2790fdf4
fix `countZeros` (#80)
should return zeros based on bits, not bytes!
2021-04-12 22:55:09 +02:00
Eugene Kabanov ede0651741
Fix issue with `uint` type. (#79)
* Fix issue with `uint` type.
Add tests for `uint` type.

* Add decode tests for `uint` type.
2021-04-09 19:01:50 +03:00
Zahary Karadjov ee78822e05
Alternative definition of string.hexToByteArray(N)
This definition is more robust. The previously existing version was
producing compilation errors in certain generic contexts. static
"regular" params are recommended in general as they are more flexible
than the explicit generic parameters.
2021-03-19 03:56:01 +02:00
Eugene Kabanov 6bcb21184a
Optimized and exception-less encoding/decoding procedures for decimal integers (#78)
* Optimized and exception-less encoding/decoding procedures for decimal integers.

* Add tests.

* Fix import path.

* Fix review comments.

* Code simplification.

* Make toBytes() allocation free.

* Do not perform conversion to signed type to avoid compiler's overflow checks.
2021-03-05 20:50:36 +02:00
Zahary Karadjov 42475fd2f1
Fix a FieldError crash in the == comparison for Result[void, T] 2021-02-22 21:04:27 +02:00
Gabben 04f8150a08
Fix #62 (#75)
* Fix #62

- Supports more than one pragma parameter (return tuple)
- Returns nil if there are zero parameters in the pragma (like std)
2021-02-10 15:10:08 +02:00
Jacek Sieka a0e8ec451e
results: include error when expecting (#76) 2021-02-10 11:05:29 +01:00
Mamy Ratsimbazafy 6d3e6a21ca
results.`==` with void, Reboot #73 addressing comments (#74) 2021-01-26 15:06:17 +01:00
Mamy Ratsimbazafy b4b3841a85
Revert "Allow comparing Result[void, E] (#71)" (#73)
This reverts commit 068412ff4e.
2021-01-26 14:20:09 +01:00
Mamy Ratsimbazafy 068412ff4e
Allow comparing Result[void, E] (#71) 2021-01-26 14:12:08 +01:00
Jacek Sieka 74d21ec8f4
mark io2 EH-free (#72) 2021-01-26 14:10:47 +01:00
andri lim 932fa6cef1
Merge pull request #69 from status-im/fix_gh_action
github CI: fixes backend selection
2021-01-08 12:06:21 +07:00
jangko 87096ee9ac
github CI: fixes backend selection 2021-01-07 10:33:01 +07:00
andri lim 1401c34374
Merge pull request #68 from status-im/fix_gh_action_script
remove redundant code from github action script
2020-12-24 09:12:02 +07:00
jangko ee6e30e7ff
remove redundant code from github action script 2020-12-23 21:40:17 +07:00
andri lim 42c09b36ee
add github action (#67)
* add github action

* test with MSVC in GH action

* fixes MSVC setup in GH action

* fixes MSVC setup in GH action: remove sdk selection
2020-12-23 12:04:18 +07:00
Jacek Sieka 5cf4feabea
leb128 + bitops fixes (#66)
Leb128 is a variable-length encoding for unsigned integers that is used
in a number of contexts - in particular, wasm, dwarf and protobuf.

This is an optimized low-level implementation that unrolls the loop
reading/writing the buffer - it is suitable to use as base for a more
specific API - no memory allocations, no exceptions.

This PR also fixes bitops2 to not raise on certaing uint->int
conversions, adapting bitops to nim 1.0 conversion rules by using a cast
instead of raising on uint->int conversion
2020-12-15 17:07:20 +02:00
Jacek Sieka 46068b49ae
forward assign declarations (#65) 2020-12-10 17:08:24 +01:00
Jacek Sieka d8d914332d
random helpers (#64)
* random helpers

* arrayops as a home for small array/openArray utilities
* assign2 - a replacement for genericAssign and assignment operators in
general which in nim are very slow
* use assign2 in a few places to speed things up

* fixes

* fixes
2020-12-10 12:05:22 +01:00
Jacek Sieka e15c1ae012
results: prevent dangling cstring pointers in result (#63) 2020-12-09 17:21:12 +01:00
Eugene Kabanov ff524ed832
Fix getCurrentDir() gcc compilation warning. (#61)
* Fix GCC warning on getcwd usage.
* Check returned value of getCurrentDir() in tests.
2020-11-04 15:22:38 +02:00
Eugene Kabanov bc3b4cf2de
Fix inherited objects problem. (#59) 2020-10-20 17:43:38 +03:00
Eugene Kabanov 7018fb0b5e
Procedures to set user-only Windows ACL settings for files and folders. (#58)
* Initial commit of UserOnly Windows ACL settings for files and folders.

* Move ACL procedures to windows/acl.
Move ACL tests to test_winacl.nim.

* Add test_winacl.nim

* Fix *nix compilation problem.

* More proper fix for *nix targets.
2020-10-15 14:27:58 +02:00
andri lim 529517d848
Merge pull request #56 from status-im/fix_bitops2
fixes bitops2: 'countOnesBuiltin' and 'parityBuiltin' when feed 'un…
2020-10-01 14:01:22 +07:00