Commit Graph

622 Commits

Author SHA1 Message Date
Justin Drake 196ac42025 Cleanup naming 2019-06-28 12:23:22 +01:00
Carl Beekhuizen 0ba933e088
Merge pull request #1209 from ethereum/early_secret_test
Resolves issue in early_secret_reveal() testing
2019-06-28 11:58:40 +02:00
Dankrad Feist 2622548ba7
Merge remote-tracking branch 'origin/dev' into dankrad-patch-8
# Conflicts:
#	specs/core/0_beacon-chain.md
2019-06-28 08:36:45 +01:00
Danny Ryan 140c69f2ec
Merge branch 'dev' into checkpoints 2019-06-27 21:02:48 -06:00
Hsiao-Wei Wang 2252142e01
padding version normal merkle tree 2019-06-28 10:24:16 +08:00
Dankrad Feist 2677d233a8
Some more (shorter) Bitvector and Bitlist tests 2019-06-28 00:31:37 +01:00
Dankrad Feist 237b41df5b
Slice notation for justification_bitfield shift 2019-06-28 00:18:54 +01:00
protolambda 384fa8854a
justification/finalization testing groundwork 2019-06-28 00:19:55 +02:00
Dankrad Feist 7adf07ea5f
A few more tests for Bitvector/Bitlist 2019-06-27 22:58:44 +01:00
Carl Beekhuizen 543729cad4
Merge pull request #1198 from ethereum/fork-choice-epoch
modify fork choice to utilize epochs properly
2019-06-27 19:14:19 +02:00
Dankrad Feist afd86f71de
Fixes in ssz impl 2019-06-27 16:31:33 +01:00
Dankrad Feist 2cb23d35ea
Merge remote-tracking branch 'origin/bitfield-suggestion' into dankrad-patch-8 2019-06-27 16:30:41 +01:00
Dankrad Feist 8ed638bb84
Linter fixes 2019-06-27 15:21:04 +01:00
Dankrad Feist b574a58109
Remove not working py-ssz decoder tests 2019-06-27 14:45:17 +01:00
protolambda a5154da1ff
suggestion to implement bitfield like 2019-06-27 15:40:40 +02:00
Dankrad Feist becb7a032a
justification_bitfield -> Bitvector[4] 2019-06-27 12:15:31 +01:00
Dankrad Feist 67c50cb197
Changed attestation and custody bitfields 2019-06-27 12:15:29 +01:00
Dankrad Feist 494984f7d3
Fix linting errors 2019-06-27 10:42:14 +01:00
Dankrad Feist 23c743570e
Add some tests and fix pack 2019-06-27 10:26:45 +01:00
Dankrad Feist 02f6ba36f0
Add Bitvector and Bitlist
Bool, Bit -> boolean, bit
Fix simple-serialize.md
2019-06-27 09:51:06 +01:00
Justin Drake bcfe383e25 WIP 2019-06-27 08:44:44 +01:00
protolambda e49519a53b
wrong end epoch test 2019-06-27 02:50:49 +02:00
protolambda a0c2f5c6b5
fix genesis testing code, add missing constant temporarily, fix py Generator/map/list problems 2019-06-27 01:57:30 +02:00
protolambda aecaed7a66
move genesis tests, structure properly, add yield keys for future test-vec generator 2019-06-27 01:56:52 +02:00
protolambda a62d0261ca
merge with dev, fixed now 2019-06-27 01:31:10 +02:00
protolambda 235c3d6841
re-enable test_empty_epoch_transition_not_finalizing for minimal config 2019-06-27 00:58:25 +02:00
protolambda f7b3c87715
check invalid state root 2019-06-27 00:43:50 +02:00
protolambda 8445d1d90c
fix formatting for lint 2019-06-27 00:37:32 +02:00
protolambda ff2d711d51
test block application on same and on previous slot state 2019-06-27 00:37:20 +02:00
protolambda 7a418ed682
test messed up indices in attester slashings 2019-06-26 23:40:56 +02:00
protolambda 24aa0646c0
new process-slashings tests, and epoch processing bugfix with transition-to-excl not working when not yielded from 2019-06-26 22:22:21 +02:00
protolambda 46dc3f39bb
detach crosslink tests from extra block 2019-06-26 22:22:21 +02:00
protolambda c66031f55c
fix crosslink tests, fix generalization of epoch processing 2019-06-26 22:22:21 +02:00
protolambda aedd281edb
clean up epoch processing testing 2019-06-26 22:22:21 +02:00
protolambda c4c9bd32e2
test_eth1_vote_no_reset 2019-06-26 22:22:21 +02:00
protolambda b2034a54a0
generalize epoch processing testing, add final-processing tests 2019-06-26 22:22:20 +02:00
protolambda 0e3c2cef5c
fix transfer tests, add 2 new tests 2019-06-26 22:22:20 +02:00
protolambda b4b4e9571d
test activation queue 2019-06-26 22:22:20 +02:00
protolambda c4b88e68e1
different new-deposit tests 2019-06-26 22:22:20 +02:00
Diederik Loerakker 6266133572
rename test methods based on suggestion
Co-Authored-By: Danny Ryan <dannyjryan@gmail.com>
2019-06-26 22:22:20 +02:00
protolambda e79b47e3c3
non-existent transfer participants tests 2019-06-26 22:22:20 +02:00
protolambda 063d94b9c7
Bugfix transfer tests 2019-06-26 22:22:19 +02:00
protolambda 55d86b4f13
effective balance testing in deposits 2019-06-26 22:22:19 +02:00
protolambda 1d6b1cab13
expected deposit count test 2019-06-26 22:22:01 +02:00
protolambda 64e15c524b
improve intersection test, just 1 index is enough. And add invalid att1/att2 tests 2019-06-26 22:19:34 +02:00
protolambda f75e3dccb2
test old and future target epoch in attestation 2019-06-26 22:19:34 +02:00
protolambda 327953852d
test invalid shard in attestation 2019-06-26 22:19:34 +02:00
protolambda 13b67b4cde
sign blocks in eth1 vote tests 2019-06-26 22:19:34 +02:00
protolambda f54d1a56f7
eth1 voting no consensus test 2019-06-26 22:19:27 +02:00
protolambda b133dedeaf
Eth1 data test 2019-06-26 22:11:40 +02:00
Diederik Loerakker d587c4fe61 Critical fix: introduce back total-value check (#1220)
This was dropped in a376b6607f, as improvement in dust checking.
Now that dust-checking is done, we still need to check if the sender has the minimum value, as decrease balance just clips to 0.
See be86f966f8 for older dust-creation problem work around, which was dropped in the above.

The bug enabled you to transfer your full balance to someone else, and pay the same amount in fee, possibly to a puppet proposer to collect back funds.
Effectively enabling printing of money. Silly bug, good to fix and introduce tests for.
2019-06-26 20:21:17 +01:00
Danny Ryan 0827fbd7d5
Merge branch 'fork-choice-epoch' into checkpoints 2019-06-25 15:00:04 -06:00
Danny Ryan c64289677f
fix gethead tests 2019-06-25 14:47:46 -06:00
Danny Ryan 228195d89d
get head tests 2019-06-25 11:48:55 -06:00
protolambda 3b5c7f243a
type hint uint input 2019-06-25 19:32:49 +02:00
Danny Ryan ac06362716
Merge branch 'fork-choice-epoch' into checkpoints 2019-06-25 10:37:04 -06:00
Danny Ryan 846ca649aa
properly construct genesis latest block header in tests 2019-06-25 10:36:11 -06:00
Carl Beekhuizen f29b693a9c
Merge dev -> early_spec_test 2019-06-25 17:11:04 +02:00
Danny Ryan b8c0985e60
merge in fork choice. tests pass 2019-06-24 22:12:55 -06:00
Danny Ryan bacd4b1e89
Merge branch 'fork-choice-epoch' into checkpoints 2019-06-24 21:26:28 -06:00
Danny Ryan d9b97578c0
lint 2019-06-24 21:23:24 -06:00
Danny Ryan 751738f411
enhance fork choice testing 2019-06-24 21:01:15 -06:00
protolambda a5b7564c5b
hash-tree-root tests 2019-06-25 02:37:05 +02:00
protolambda 5989e5cd23
use Bool as base name, make Bit an alias 2019-06-24 23:56:26 +02:00
protolambda c73417b4ca
deserialize-basic detail, make subclass 2019-06-24 23:40:47 +02:00
protolambda 82ae180490
clean up list limit constants 2019-06-24 23:38:36 +02:00
Carl Beekhuizen 139d0f56f1
Finishes moving mask to hash() 2019-06-24 16:26:21 +02:00
Carl Beekhuizen d9644f518b
mask is hash() in tests
Co-Authored-By: dankrad <dankrad@ethereum.org>
2019-06-24 16:08:13 +02:00
Justin Drake 181a2a876a Cleanups 2019-06-22 22:49:53 +02:00
protolambda da858f1aae
fix int encoding, fix list randomization size limit. 2019-06-22 21:49:42 +02:00
protolambda 9befe09f82
test merkleize chunks 2019-06-22 21:27:56 +02:00
protolambda 0249cf651e
fix lint, and update encoder to handle the few imported types well 2019-06-22 20:04:17 +02:00
Danny Ryan 8a732fbbcf
pass on checkpoints working in testing 2019-06-22 12:00:26 -06:00
protolambda 47034a6c8c
fix imports in helper test file 2019-06-22 19:59:53 +02:00
protolambda e873bbd73b
support list casting 2019-06-22 19:59:15 +02:00
protolambda dd5ad2e2c5
remove unnecessary (and now outdated) type hints, update List encoding for generators 2019-06-22 19:48:06 +02:00
protolambda f95e7315b4
fix get_active_validator_indices typing usage 2019-06-22 18:34:33 +02:00
Diederik Loerakker c86108de00
Merge pull request #1207 from ethereum/fix_make_lint
Fix `make lint`
2019-06-22 17:07:00 +02:00
Carl Beekhuizen a5b22e13b8
Resolves make masker sign mask 2019-06-22 16:56:16 +02:00
Hsiao-Wei Wang 183fa3c776
Make linter happy 2019-06-21 23:09:11 -06:00
Hsiao-Wei Wang 6aef6c5634
Clean up 2019-06-21 22:26:15 -06:00
Hsiao-Wei Wang b51011568a
Merge branch 'dev' into test_genesis 2019-06-21 22:13:46 -06:00
Hsiao-Wei Wang 5f09212777
yield for `is_genesis_trigger` 2019-06-21 22:09:09 -06:00
Hsiao-Wei Wang 24ad42663f
`spectest_with_bls_switch` decorator 2019-06-21 22:02:03 -06:00
Hsiao-Wei Wang 7468fd034f
Add more test 2019-06-21 21:50:36 -06:00
Hsiao-Wei Wang 8828dad786
minor updates 2019-06-21 17:07:44 -06:00
Hsiao-Wei Wang e7c595d1d6
Fix test_process_deposit.py 2019-06-21 16:33:24 -06:00
Hsiao-Wei Wang ac34221f55
Fix `is_genesis_trigger` and add test case 2019-06-21 16:30:31 -06:00
Hsiao-Wei Wang 7a16db144c
Add test_genesis 2019-06-21 15:59:18 -06:00
Danny Ryan 8f99741344
remove commented old code 2019-06-21 14:47:18 -06:00
Danny Ryan c09e45c5fc
fix rule_4 underflow and split out genesis finality test 2019-06-21 14:45:15 -06:00
Danny Ryan d463ada754
Merge branch 'dev' into list-rework 2019-06-21 14:18:45 -06:00
Danny Ryan f12c32a690
Xdist tests for parallelism (#1201)
* add xdist parallelization

* reduce circleci cpus to 8

* reduce cpus to 4

* reduce circleci cpus to 2

* circleci back to 4 cpus
2019-06-21 14:18:28 -06:00
protolambda d1fa3acb27
remove unused dependency 2019-06-21 21:27:26 +02:00
protolambda 80c40f5e09
merge dev, resolve minor merge conflicts 2019-06-21 21:22:23 +02:00
protolambda b7b2fee635
uint add/sub type checking, fixes #1029 2019-06-21 21:12:27 +02:00
Carl Beekhuizen 0e59c6676a
Stop yielding from fork-choie tests 2019-06-21 13:00:42 +02:00
protolambda 6648b3c49e
remove old deposits test, there is no deposit index in deposit data anymore 2019-06-21 00:23:28 +02:00
protolambda c20372409c
comment out old deposit test, re-introduced soon maybe, cc Justin 2019-06-20 22:52:16 +02:00
protolambda f27c44b953
fix deposit negative index fail 2019-06-20 22:49:34 +02:00
protolambda 6338c5b880
fix custody bug, needs review from Carl 2019-06-20 22:49:03 +02:00
protolambda d8f470bb4a
enable slicing of SSZ lists/vectors 2019-06-20 22:34:19 +02:00
protolambda 2d67717079
fix linting issues + make spec builder remove comments in container re-initialization part 2019-06-20 21:42:55 +02:00
protolambda b4ef672f87
deal with deepcopy modifying vector length from 0 to full length during copy 2019-06-20 21:12:46 +02:00
protolambda 8bd204827b
improve type coercion; coerce between equal-length uint subclasses 2019-06-20 21:08:34 +02:00
protolambda 8c6d2b42d8
update ssz-pyssz decoder for fuzzing 2019-06-20 21:07:23 +02:00
Carl Beekhuizen c26fffc154
Moves copy into SSZ container 2019-06-20 20:55:28 +02:00
protolambda 224c98a094
last() method, no negative index lookups 2019-06-20 20:55:17 +02:00
protolambda f157745248
resolve some remaining list-rework rebase details 2019-06-20 20:42:19 +02:00
protolambda 82240d8dbd fix vector default type 2019-06-20 20:31:16 +02:00
protolambda 977856b06f
ssz typing now subclasses list/bytes, much easier to work with than wrapped list/bytes functionality 2019-06-20 20:30:42 +02:00
protolambda 4e747fb887
fixes for class based ssz typing 2019-06-20 20:25:22 +02:00
protolambda 7cdec746b4 fix field iteration crash in ssz typing 2019-06-20 20:20:45 +02:00
protolambda a33c67894e update ssz testing/debug utils 2019-06-20 20:20:45 +02:00
protolambda 6b82e3faa5
Modifications from Vitalik, to enable SSZ Partials 2019-06-20 20:20:07 +02:00
protolambda 5be0c57aad fix linting + mypy 2019-06-20 20:17:29 +02:00
protolambda 4aefc078e9
list-rework type fixes 2019-06-20 20:11:39 +02:00
protolambda 8c6ddd5233 container field coercion 2019-06-20 20:05:57 +02:00
protolambda 73ba419d64 check virtual lengths, fix imports 2019-06-20 20:05:57 +02:00
protolambda 0a43003b42 minor test improvements 2019-06-20 20:03:21 +02:00
protolambda 8bd2e878ef bugfixes and typing improvements 2019-06-20 20:03:21 +02:00
protolambda 08e6f32f38 typing improvements, type testing 2019-06-20 20:03:21 +02:00
protolambda 4ebdceaf12
highly experimental typing 2019-06-20 19:57:50 +02:00
protolambda 108410d862 Change byte to explict class instead of newtype 2019-06-20 19:56:09 +02:00
protolambda 82e7392b17 default method for container is recognized now 2019-06-20 19:56:09 +02:00
Diederik Loerakker 3a9b1fb72c Update test_libs/pyspec/eth2spec/utils/ssz/ssz_impl.py
Co-Authored-By: vbuterin <v@buterin.com>
2019-06-20 19:56:09 +02:00
Diederik Loerakker 54a1fa9abe Update test_libs/pyspec/eth2spec/utils/ssz/ssz_impl.py
Co-Authored-By: vbuterin <v@buterin.com>
2019-06-20 19:56:09 +02:00
protolambda cd5f59eb74
fix bytes value check, fix default-type checking 2019-06-20 19:55:53 +02:00
protolambda b6cf809d9b
more improvements, and implement new space-efficient merkleization with padding support 2019-06-20 19:54:59 +02:00
protolambda d1ecfd510e
typing improvements 2019-06-20 19:53:32 +02:00
vbuterin 8919f628cb Update test_libs/pyspec/eth2spec/utils/ssz/ssz_impl.py
Co-Authored-By: Diederik Loerakker <proto@protolambda.com>
2019-06-20 19:52:02 +02:00
Vitalik Buterin 7c4232455c Added get_container_type to get_zero_value 2019-06-20 19:52:02 +02:00
protolambda 5ddfe34f0c
Simplified SSZ impl 2019-06-20 19:51:38 +02:00
Carl Beekhuizen e0d814df32
Merge branch 'dev' into executable_fork_choice
* dev:
  Increase historical length and cleanups (#1196)
2019-06-19 22:43:14 +02:00
Carl Beekhuizen 241fe34da7
Workaround for python3.6 2019-06-19 22:37:51 +02:00
Danny Ryan 29dbe1b880 Increase historical length and cleanups (#1196)
* increase historical length and a few cleanups
2019-06-19 20:59:44 +01:00
Carl Beekhuizen 3418c3506f
Merge dev and resolve conflicts (please let the CI tests pass with the new dev) 2019-06-19 20:27:54 +02:00
Hsiao-Wei Wang dc01218182
Add `dataclasses==0.6` to setup.py 2019-06-18 14:23:31 -06:00
Carl Beekhuizen 31a4700223
Merge conflicts on `dev` 2019-06-17 22:09:43 -04:00
Hsiao-Wei Wang 01e9f18713
Merge branch 'dev' into mypy 2019-06-17 17:51:46 -04:00
Hsiao-Wei Wang 9af9bbf42b
Merge branch 'dev' into mypy 2019-06-17 17:51:00 -04:00
Danny Ryan d7ac601b9e
Merge branch 'dev' into v071backport 2019-06-17 13:42:27 -06:00
Carl Beekhuizen 2ea6cede3e
Moves fork-choice objects away from SSZ 2019-06-17 10:48:33 -04:00
Danny Ryan ac76c6d279
Merge pull request #1182 from ethereum/cov-reports
generate coverage reports in make test, open as html site
2019-06-16 17:42:57 -06:00
Danny Ryan 2f9c554bf7
minor fix to makefile, add codecov instructiosn to readme 2019-06-16 17:38:48 -06:00
Danny Ryan 25a16bd26a
Merge pull request #1178 from ethereum/decode-with-pyssz
Fuzzing utilities package / SSZ decoding for spec
2019-06-16 17:25:50 -06:00
Carl Beekhuizen 9f2d06b2e7
Somehow I had indented with 5 spaces everywhere. 2019-06-16 16:02:56 -04:00
Carl Beekhuizen f421850dc9
Fixes tests! Thanks @hwwhww! 2019-06-16 15:53:42 -04:00
Carl Beekhuizen 4deb311b71
Debugging 1st test 2019-06-16 12:17:31 -04:00
Carl Beekhuizen 5d10cd63c7
SSZ (partially) handles Dicts 2019-06-16 09:52:52 -04:00
Carl Beekhuizen 061ecf7d0a
Adds fork-choice tests 2019-06-15 19:13:56 -04:00
Hsiao-Wei Wang 00a68e28b5
Define Custom Types via function_puller 2019-06-15 16:57:50 -04:00
Justin Drake ed748a7d76 Address Danny's comments 2019-06-15 15:09:50 +01:00
protolambda 1c51982c6b
generate coverage reports in make test, open as html site 2019-06-14 23:12:04 +02:00
protolambda 367586d888
remove need for presets loading, just test mainnet, not too many/large objects anyway 2019-06-14 21:31:33 +02:00
protolambda d4bf55e5a1
update pyssz to include deserialization bugfix 2019-06-14 21:24:24 +02:00
protolambda 895ab67815
fix decoder, also fix bug in pyssz, see PR 74 2019-06-14 20:41:08 +02:00
protolambda 01be8b7e65
minor fix 2019-06-14 19:16:15 +02:00
protolambda 7b0ffc1ace
move decoder for fuzzing, minor fixes, update dependency to support SOS style offsets 2019-06-14 19:09:49 +02:00
Danny Ryan a6230425b8
Merge branch 'dev' into container-cleanup 2019-06-14 10:36:41 -06:00
Danny Ryan f834f727fa
lint 2019-06-13 18:03:20 -06:00
Danny Ryan c391017a05
address #1146 by inserting state root and re-signing blocks in tests 2019-06-13 17:57:29 -06:00
protolambda e7bb9bf19b
SSZ decoding through pyssz, with translation of types/values 2019-06-14 01:56:36 +02:00
Diederik Loerakker e4704e08cc
Merge pull request #1175 from ethereum/bytes-type-error
fix #1169 bytes type error
2019-06-13 22:49:19 +02:00
Danny Ryan 4a08abfa1d
ensure sanity tests run with bls 2019-06-13 14:47:53 -06:00
Danny Ryan 7c0cc7f801
fix #1169 bytes type error 2019-06-13 14:32:45 -06:00
Hsiao-Wei Wang 7a366828ba
Make phase0 pass 2019-06-12 14:54:00 -04:00
Danny Ryan 577f76aff5
Merge pull request #1165 from ethereum/phase-generators
phase restricted generators
2019-06-11 16:48:18 -06:00
protolambda 9ec395c04f
fig linting + improve docs + structure of hash optimization 2019-06-11 21:53:38 +02:00
protolambda f4814862fe
fix typing check, add zero-hash cache to hash function 2019-06-11 19:23:45 +02:00
protolambda 22f624e12e
re-order type check for more speed 2019-06-11 18:08:27 +02:00
protolambda 7fafebd6cf
missed one case, fix withdrawal byte <> int problem 2019-06-11 17:32:42 +02:00
protolambda 2d636ddf5a
BLS withdrawal byte is formatted as int now, but still one byte. Justin changed spec, now fix tests + configs 2019-06-11 17:27:34 +02:00
Danny Ryan cc625c7d6d
lint 2019-06-11 09:26:23 -06:00
Danny Ryan ef1ef753a3
comment out transfer test from sanity tests 2019-06-11 09:16:37 -06:00
protolambda e86771250b
Fix tests to use new constant name 2019-06-11 17:16:02 +02:00
protolambda 46d8422510
fix ssz container recognition for generators 2019-06-11 16:49:36 +02:00
Hsiao-Wei Wang f2c33529df
Add mypy check in CI 2019-06-11 00:45:00 -04:00
Hsiao-Wei Wang 9f454185f8
WIP!
1. Use custom types in SSZ declaration
2. Casting
2019-06-11 00:44:54 -04:00
Hsiao-Wei Wang 8b64f37d22
Make uint64 be `class` for type hinting 2019-06-10 23:16:59 -04:00
Danny Ryan 94d4e3a944
operations suite generator for phase0 2019-06-10 20:05:43 -06:00
Danny Ryan c4bf772d30
demo phase restricted generators for epoch processing 2019-06-10 17:26:39 -06:00
Justin Drake 05f1a44a38 Fix tests 2019-06-10 21:20:45 +01:00
Justin Drake dc56d87eef Revert a couple of renamings 2019-06-10 21:16:51 +01:00
Danny Ryan e68b495ada
Merge branch 'dev' into master-port 2019-06-10 10:53:13 -06:00
Hsiao-Wei Wang 9fc197af67
class Bytes32 2019-06-10 11:10:13 -04:00
Justin Drake 565f61dfaa Cleanup containers 2019-06-09 20:41:21 +01:00
Carl Beekhuizen 67471a8d6e
Rework of phases decorator 2019-06-06 23:30:40 +02:00
Carl Beekhuizen 956c476d81
Move over to parameterised decorators for phases 2019-06-06 16:23:30 +02:00
Carl Beekhuizen 35c03c5f3e
Adds review suggestions I missed 2019-06-06 11:45:22 +02:00
Carl Beekhuizen 4c1b9ef6d6
Fixes custody key reveal test bug 2019-06-06 11:04:55 +02:00
Carl Beekhuizen 60d9dc68c4
Apply suggestions from @djrtwo's code review 2019-06-05 21:49:30 +02:00
Carl Beekhuizen e498ff7e94
Separates tests into phases 2019-06-05 21:28:30 +02:00
protolambda b9abc5f2cf
List[uint64] is not like a type but just for annotation, same for other Generics with __args__, Vector/BytesN work, because their metaclasses produce non-parametrized types, so don't check vector values when type contains args 2019-06-05 18:53:34 +02:00
protolambda 1cc7c7309d
change to issubclass, hope parametrized external type is ok 2019-06-05 18:28:09 +02:00
protolambda a7554d503c
fix for typing check of vector elements with non-type element type (annotation) 2019-06-05 18:02:39 +02:00
Carl Beekhuizen e5fb91c4a2
Make test generators work with phase 1 execution 2019-06-05 16:23:44 +02:00
Carl Beekhuizen d761b6f041
Implements new SSZ types 2019-06-05 15:29:26 +02:00
protolambda 4bf3a26afc
fix formatting 2019-06-04 18:18:18 +02:00
protolambda 6168a90a20
speed and simplicity improvement for next_power_of_two function 2019-06-04 18:12:23 +02:00