* Worked-around a bug where Nim comlains that the return value is
not a path expression in functions lacking explicit return
statements
* Worked-around a limitation that Nim doesn't allow:
let foo: lent T = makeT()
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.
* 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.
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
* 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
* 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.
* Initial commit of io2 module
* Rename to io2.
Add createPath with permissions.
Add writeFile with permissions.
Add tests.
* Add test_io2 to all tests.
* Add posix permissions.
* Add toString procedure for set[Permission] and tests.
* Remove safeio.nim
* Add setPermissions procedures.
Fix writeFile() to change permissions.
Add more writeFile() tests.
* Change C ReadOnly/WriteOnly/ReadWrite to pair of Read/Write.
Add tests for openFile.
* File handles is no inherited by default, with option to turn on inheritance.
* Review comments fixes.
More tests.
* Fix x86 compilation problems.
* Rename toSet -> toPermissions.
* Avoid race condition on writeFile permissions.
This code is extracted from the error-handling proposal where it's
used to implement `Try` blocks (Faux closures are created there in
order to assign raises lists to them). The desktop team faced a
similar problem where the `spawn` API doesn't support closures,
but the restriction can be easily worked-around with faux closures.