Ivan Enderlin
c7bb9904f7
feat(interface-types) Encodes/decodes the record.lower
instruction.
2020-04-02 12:05:22 +02:00
Ivan Enderlin
5249b243ee
feat(interface-types) Encodes/decodes the record.lift
instruction.
2020-03-31 08:17:52 +02:00
Ivan Enderlin
41f9c231c0
feat(interface-types) Introduce RecordType
for InterfaceType
and Type
.
...
The `Type::Record` variant now is defined by `RecordType`. In
addition, `InterfaceType` has a new variant: `Record`, that is also
defined by `RecordType`. Encoders and decoders are updated to consider
`RecordType`, which removes code duplication and simplify code.
2020-03-26 13:35:24 +01:00
Ivan Enderlin
bddb4e90ee
test(interface-types) Test Type::Record
.
2020-03-26 11:18:24 +01:00
Ivan Enderlin
c3c6fcbfdd
feat(interface-types) Introduce the record type.
...
This patch updates the `Type` type to be an enum with 2 variants:
`Function` and `Record`, resp. to represent:
1. `(@interface type (func (param i32 i32) (result string)))`
2. `(@interface type (record string i32))`
This patch updates the binary encoder and decoder, along with the WAT
encoder and decoder.
2020-03-26 10:54:58 +01:00
Ivan Enderlin
55a5b97443
feat(interface-types) Implement the string.size
instruction.
2020-03-24 15:33:42 +01:00
Ivan Enderlin
7a2db276f3
feat(interface-types) Implement the string.(lift|lower)_memory
instructions.
...
The `string.lift_memory` instruction replaces `memory-to-string`, and
`string.lower_memory` replaces `string-to-memory`.
2020-03-24 13:25:06 +01:00
Ivan Enderlin
9af32b273c
feat(interface-types) Implement [siu](NN|MM).from_*
instructions.
...
Basically the `x-to-y` instructions have been renamed `y.from_x`. This
patch updates the instruction. The binary representation isn't
specified yet, so it's just arbitrary values.
2020-03-24 12:43:57 +01:00
Ivan Enderlin
47b63bc9c6
Merge branch 'master' into feat-interface-types-instructions-string-and-memory
2020-03-10 10:33:56 +01:00
Ivan Enderlin
a93421f6c2
feat(interface-types) Rename write-utf8
to string-to-memory
.
2020-03-10 10:25:58 +01:00
Ivan Enderlin
2d6b987791
feat(interface-types) read-utf8
is renamed memory-to-string
.
2020-03-09 15:06:35 +01:00
Ivan Enderlin
f342670532
feat(interface-types) Rename call
to call-core
, and remove call-export
.
2020-03-09 14:33:17 +01:00
Ivan Enderlin
78f2fb580c
feat(interface-types) Fix clippy errors and warnings.
2020-02-26 17:02:52 +01:00
Ivan Enderlin
55029b7c36
feat(interface-types) Implement lifting and lowering instructions.
...
List from https://github.com/WebAssembly/interface-types/blob/master/proposals/interface-types/working-notes/instr.md .
2020-02-26 16:20:39 +01:00
Ivan Enderlin
8dacaab080
feat(interface-types) Remove abandonned instructions.
2020-02-26 15:48:00 +01:00
Ivan Enderlin
09498ee286
fix(interface-types) arg.get
's index is of type u32
.
2020-02-26 15:42:29 +01:00
Ivan Enderlin
766312fd90
test(interface-types) Test adapter to binary.
2020-02-26 15:38:59 +01:00
Ivan Enderlin
d4c01e8ddc
test(interface-types) Fix all tests based on previous commits.
2020-02-26 15:32:14 +01:00
Ivan Enderlin
f9ef4a650b
feat(interface-types) Re-implement interface kinds.
...
Adopt a flat structure: Flat resolved imports, flat resolved exports,
flat resolved types etc.
Also, use the latest textual format for adapters & co.
2020-02-24 18:12:01 +01:00
Ivan Enderlin
410d8d4476
feat(interface-types) Re-implement Type
.
...
The semantics of “types” have changed since the previous draft. Now, a
type is like a regular WebAssembly type but with Interface Types.
2020-02-24 16:23:31 +01:00
Ivan Enderlin
165a8ca585
feat(interface-types) Forwarded adapters have been removed.
2020-02-24 15:56:11 +01:00
Ivan Enderlin
1f2a5640a6
feat(interface-types) The “helper adapter” has been removed.
2020-02-24 15:49:03 +01:00
Ivan Enderlin
09e57b7156
feat(interface-types) Update interface types.
...
According to the last working notes, new interface types are s8, s16,
s32, s64, u8, u16, u32, u64, f32, f64, string, anyref, i32, and i64.
Their binary reprensentations are changing too, from 0x00 to 0x0d.
2020-02-24 15:37:03 +01:00
Ivan Enderlin
5f4862d6da
Merge branch 'master' into feat-interface-types-decoders-wat
2020-02-21 12:24:52 +01:00
Ivan Enderlin
ea855d29bd
doc(interface-types) Add intra links.
2020-02-21 12:23:58 +01:00
Ivan Enderlin
fdcc511dd8
test(interface-types) Fix one bug and write the test suite.
2020-02-17 13:55:59 +01:00
Ivan Enderlin
1f7c268f41
fix(interface-types) Remove a dbg!
macro.
2020-02-14 12:19:29 +01:00
Ivan Enderlin
276478d1ed
chore(decoders) Simplify code.
2020-02-13 13:56:30 +01:00
Ivan Enderlin
6314ebcbd6
chore(decoders) Simplify code.
2020-02-13 13:54:26 +01:00
Ivan Enderlin
ab717513ec
fix(decoders) Remove the unsafe
block in the string
parser.
...
Instead of using `str::from_utf8_unchecked`, this patch updates the
code to use `str::from_utf8` and handles the error appropriately.
2020-02-13 13:52:23 +01:00
Ivan Enderlin
9a185a0bf6
feat(decoders) Improve LEB parser in the binary
module.
...
The LEB parser is renamed `uleb`. It now checks for overflow, and
badly-formed bits, resp. `TooLarge` or `Eof`. More test cases are
added, whose from the DWARF 4 standard.
2020-02-13 13:36:18 +01:00
Ivan Enderlin
074108d91b
doc(interface-types) Improve documentation of decoders::binary::leb
.
2020-02-13 11:41:02 +01:00
Ivan Enderlin
80f317a1eb
feat(interface-types) Ensure ast::Type
is always well-formed.
...
As @MarkMcCaskey noted, `Type` can be corrupted because `field_names`
and `field_types` must have the same length. This patch removes the
public visibility, and adds methods like `new`, `add_field`,
`field_names` and `field_types` to encapsulate `Type` internal data.
2020-02-13 11:24:29 +01:00
Ivan Enderlin
ddf6711045
doc(interface-types) Improve documentation of the instruction
module.
...
Also, rename `RepeatWhile` to `RepeatUntil`.
2020-02-12 15:59:41 +01:00
Ivan Enderlin
5fa96f062d
doc(interface-types) Add a doctest for decoders::binary::parse
.
2020-02-10 16:48:25 +01:00
Ivan Enderlin
764edc8022
test(interface-types) Test the parse
parser.
2020-02-10 16:39:34 +01:00
Ivan Enderlin
a53b57b595
doc(interface-types) Improve documentation of the binary
module.
2020-02-10 16:39:06 +01:00
Ivan Enderlin
11729b1d4c
feat(interface-types) Rename ImportedFunction
to Import
.
...
So that we are consistent with `Export`.
2020-02-10 15:41:10 +01:00
Ivan Enderlin
c042050497
feat(interface-types) Split the interpreter into multiple modules/files.
2019-09-26 14:14:46 +02:00
Ivan Enderlin
cecb00bd6a
feat(interface-types) Create vectors with specific capacity when possible.
2019-09-26 01:00:17 +02:00
Ivan Enderlin
07055522a1
feat(interface-types) Update Instruction
.
2019-09-25 23:29:08 +02:00
Ivan Enderlin
429868a125
feat(interface-types) Implement the call
executable instruction.
...
The patch requires to implement the `wasm::TypedIndex`,
`wasm::LocalImportIndex`, and the `wasm::LocalImport` traits.
2019-09-25 21:53:23 +02:00
Ivan Enderlin
f453af05c6
chore(interface-types) Fix clippy warnings.
2019-09-20 12:02:11 +02:00
Ivan Enderlin
23d5e7b7b3
feat(interface-types) Draft instruction interpreter.
2019-09-19 00:18:36 +02:00
Ivan Enderlin
68e699e495
feat(interface-types) Add new instructions.
2019-09-18 17:12:42 +02:00
Ivan Enderlin
a017b920c5
fix(interface-types) get-field
#1 argument is of type InterfaceType
.
2019-09-18 17:12:42 +02:00
Ivan Enderlin
086c3bdb4c
feat(interface-types) Move TryFrom
from the ast
to the binary
module.
2019-09-18 17:12:42 +02:00