Skip to content

Commit c0164a4

Browse files
authored
Merge pull request #441 from wasmx/changelog-0.3
Update changelog
2 parents 0812ece + 4129bbe commit c0164a4

File tree

1 file changed

+111
-1
lines changed

1 file changed

+111
-1
lines changed

CHANGELOG.md

Lines changed: 111 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,114 @@ Documentation of all notable changes to the **Fizzy** project.
55
The format is based on [Keep a Changelog],
66
and this project adheres to [Semantic Versioning].
77

8+
## [0.3.0] — Unreleased
9+
10+
This main focus for this release is to implement every WebAssembly validation rule from the specification.
11+
12+
It passes a large part of the [official test suite (spectest 1.0)]:
13+
- 4481 of 4490 binary parser and execution tests,
14+
- 942 of 942 validation tests,
15+
- 6381 skipped due to containing floating-point instructions or testing text format parser.
16+
17+
Additionally, measurable speed improvements were made for branching and function calls.
18+
19+
#### Performance comparison to v0.2.0
20+
21+
The time of WebAssembly module instantiation (including binary loading and verification) has almost doubled, while the execution is 10% faster in heavy cases.
22+
23+
##### Detailed benchmark results
24+
25+
```
26+
Comparing Fizzy 0.2.0 to 0.3.0 (Intel Haswell CPU, 4.0 GHz)
27+
Benchmark CPU Time [µs] Old New
28+
----------------------------------------------------------------------------
29+
30+
fizzy/parse/blake2b +0.5960 14 23
31+
fizzy/instantiate/blake2b +0.4412 19 28
32+
fizzy/parse/ecpairing +0.8076 760 1373
33+
fizzy/instantiate/ecpairing +0.7055 828 1412
34+
fizzy/parse/keccak256 +0.6071 26 42
35+
fizzy/instantiate/keccak256 +0.4818 32 47
36+
fizzy/parse/memset +0.3710 4 6
37+
fizzy/instantiate/memset +0.2013 8 10
38+
fizzy/parse/mul256_opt0 +0.6683 5 8
39+
fizzy/instantiate/mul256_opt0 +0.3370 9 12
40+
fizzy/parse/sha1 +0.6466 23 38
41+
fizzy/instantiate/sha1 +0.4696 29 43
42+
fizzy/parse/sha256 +0.7765 36 63
43+
fizzy/instantiate/sha256 +0.6920 42 70
44+
fizzy/parse/micro/eli_interpreter +0.2003 3 4
45+
fizzy/instantiate/micro/eli_interpreter +0.0935 7 8
46+
fizzy/parse/micro/factorial +0.2105 1 1
47+
fizzy/instantiate/micro/factorial +0.1369 1 1
48+
fizzy/parse/micro/fibonacci +0.2773 1 1
49+
fizzy/instantiate/micro/fibonacci +0.1888 1 2
50+
fizzy/parse/micro/host_adler32 +0.1448 1 2
51+
fizzy/instantiate/micro/host_adler32 +0.0674 4 4
52+
fizzy/parse/micro/spinner +0.1232 1 1
53+
fizzy/instantiate/micro/spinner +0.0774 1 1
54+
55+
fizzy/execute/blake2b/512_bytes_rounds_1 -0.0250 86 83
56+
fizzy/execute/blake2b/512_bytes_rounds_16 -0.0197 1294 1268
57+
fizzy/execute/ecpairing/onepoint -0.1027 479448 430202
58+
fizzy/execute/keccak256/512_bytes_rounds_1 -0.0422 104 100
59+
fizzy/execute/keccak256/512_bytes_rounds_16 -0.0352 1512 1458
60+
fizzy/execute/memset/256_bytes -0.0318 7 7
61+
fizzy/execute/memset/60000_bytes -0.0109 1609 1592
62+
fizzy/execute/mul256_opt0/input0 -0.0254 27 26
63+
fizzy/execute/mul256_opt0/input1 -0.0262 27 26
64+
fizzy/execute/sha1/512_bytes_rounds_1 -0.0452 95 90
65+
fizzy/execute/sha1/512_bytes_rounds_16 -0.0478 1318 1255
66+
fizzy/execute/sha256/512_bytes_rounds_1 +0.0446 93 97
67+
fizzy/execute/sha256/512_bytes_rounds_16 +0.0457 1280 1338
68+
fizzy/execute/micro/eli_interpreter/halt -0.3601 0 0
69+
fizzy/execute/micro/eli_interpreter/exec105 -0.0299 5 5
70+
fizzy/execute/micro/factorial/10 -0.2383 1 0
71+
fizzy/execute/micro/factorial/20 -0.2363 1 1
72+
fizzy/execute/micro/fibonacci/24 -0.2760 10273 7438
73+
fizzy/execute/micro/host_adler32/1 -0.5324 0 0
74+
fizzy/execute/micro/host_adler32/100 -0.5275 6 3
75+
fizzy/execute/micro/host_adler32/1000 -0.5303 63 30
76+
fizzy/execute/micro/spinner/1 -0.0677 0 0
77+
fizzy/execute/micro/spinner/1000 -0.0256 10 10
78+
```
79+
80+
### Added
81+
82+
- Type validation of instructions. [#403](https://github.com/wasmx/fizzy/pull/403)
83+
[#404](https://github.com/wasmx/fizzy/pull/404) [#411](https://github.com/wasmx/fizzy/pull/411)
84+
[#414](https://github.com/wasmx/fizzy/pull/414) [#415](https://github.com/wasmx/fizzy/pull/415)
85+
- Type validation of block results. [#407](https://github.com/wasmx/fizzy/pull/407)
86+
[#429](https://github.com/wasmx/fizzy/pull/429)
87+
- Type validation of branch instructions. [#408](https://github.com/wasmx/fizzy/pull/408)
88+
- Type validation of select instruction. [#413](https://github.com/wasmx/fizzy/pull/413)
89+
- Type validation in constant expressions. [#430](https://github.com/wasmx/fizzy/pull/430)
90+
- Validation of `else` branch in `if` instruction. [#417](https://github.com/wasmx/fizzy/pull/417)
91+
- Validation of frame types in `br_table` instruction. [#427](https://github.com/wasmx/fizzy/pull/427)
92+
- Validation of function indices in element section. [#432](https://github.com/wasmx/fizzy/pull/432)
93+
- Validation of functions' arity. [#433](https://github.com/wasmx/fizzy/pull/433)
94+
- Validation of alignment for floating point memory instructions. [#437](https://github.com/wasmx/fizzy/pull/437)
95+
- CI now includes compiling and testing with C++20 standard. [#405](https://github.com/wasmx/fizzy/pull/405)
96+
97+
### Changed
98+
99+
- API cleanup (`execute` function overload taking `Module` is used only internally).
100+
[#409](https://github.com/wasmx/fizzy/pull/409)
101+
- `execution_result` changed to returning single value instead of the entire stack and renamed to `ExecutionResult`.
102+
[#219](https://github.com/wasmx/fizzy/pull/219) [#428](https://github.com/wasmx/fizzy/pull/428)
103+
- Optimization for branch instructions. [#354](https://github.com/wasmx/fizzy/pull/354)
104+
- Optimization of passing arguments to functions (eliminate extra copy). `execute` function now takes the arguments as
105+
`span<const uint64_t>`. [#359](https://github.com/wasmx/fizzy/pull/359) [#404](https://github.com/wasmx/fizzy/pull/404)
106+
- Better unit test coverage. [#381](https://github.com/wasmx/fizzy/pull/381) [#410](https://github.com/wasmx/fizzy/pull/410)
107+
[#431](https://github.com/wasmx/fizzy/pull/431) [#435](https://github.com/wasmx/fizzy/pull/435)
108+
[#444](https://github.com/wasmx/fizzy/pull/444)
109+
110+
### Fixed
111+
112+
- `fizzy-bench` correctly handles errors during instantiation in wasm3.
113+
[#381](https://github.com/wasmx/fizzy/pull/381)
114+
115+
8116
## [0.2.0] — 2020-06-29
9117

10118
Firstly, this release implements many validation steps prescribed by the specification, with the exception of type checking.
@@ -21,6 +129,7 @@ Secondly, two major optimisations are included: branch resolution is done once i
21129
The time of WebAssembly module instantiation (including binary loading and verification) has increased by 15–30%, while the execution is approximately twice as fast.
22130

23131
##### Detailed benchmark results
132+
24133
```
25134
Comparing Fizzy 0.1.0 to 0.2.0 (Intel Haswell CPU, 4.0 GHz)
26135
Benchmark CPU Time [µs] Old New
@@ -71,7 +180,6 @@ fizzy/execute/micro/spinner/1 -0.5706 0 0
71180
fizzy/execute/micro/spinner/1000 -0.4801 20 10
72181
```
73182

74-
75183
### Added
76184

77185
- Introduced a Fizzy logo. [#326](https://github.com/wasmx/fizzy/pull/326) [#344](https://github.com/wasmx/fizzy/pull/344)
@@ -127,6 +235,7 @@ fizzy/execute/micro/spinner/1000 -0.4801 20 10
127235
[#349](https://github.com/wasmx/fizzy/pull/349)
128236
- `fizzy-bench` correctly handles errors during validation phase. [#340](https://github.com/wasmx/fizzy/pull/340)
129237

238+
130239
## [0.1.0] — 2020-05-14
131240

132241
First release!
@@ -146,6 +255,7 @@ First release!
146255

147256
[0.1.0]: https://github.com/wasmx/fizzy/releases/tag/v0.1.0
148257
[0.2.0]: https://github.com/wasmx/fizzy/releases/tag/v0.2.0
258+
[0.3.0]: https://github.com/wasmx/fizzy/compare/v0.2.0..master
149259

150260
[Keep a Changelog]: https://keepachangelog.com/en/1.0.0/
151261
[Semantic Versioning]: https://semver.org

0 commit comments

Comments
 (0)