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.