bors[bot]
6661ca73a6
Merge #1370
...
1370: feat(interface-types) Crate reorganization r=Hywan a=Hywan
This PR re-organizes the crate:
* `interpreter/wasm/values.rs` moves to `values.rs`,
* `interpreter/wasm/serde/*` moves to `serde/*`,
* `types.rs` is new, and includes `InterfaceType` and `RecordType`,
* Update the documentation.
Bonus: `InterfaceValue::Record` now takes a `Vec1` rather than a `Vec` to match `InterfaceType::Record`.
Co-authored-by: Ivan Enderlin <ivan@mnt.io>
2020-04-10 08:24:23 +00:00
Ivan Enderlin
3e9c3a1694
doc(interface-types) Update the module documentation.
2020-04-09 12:16:57 +02:00
Ivan Enderlin
4c2fb953a4
feat(interface-types) InterfaceValue::Record
now takes a Vec1
.
...
It matches the definition of `InterfaceType::Record`.
2020-04-09 12:10:48 +02:00
Ivan Enderlin
700c290e55
feat(interface-types) Move the values
and serde
modules to the root of the crate.
2020-04-09 11:23:26 +02:00
Ivan Enderlin
e4b05d0b00
feat(interface-types) Remove the re-export of InterfaceType
in values
.
2020-04-09 10:54:09 +02:00
Ivan Enderlin
f955617d17
feat(interface-types) Extract InterfaceType
and RecordType
into its own types
module.
2020-04-09 10:48:50 +02:00
bors[bot]
ad6f939e85
Merge #1362
...
1362: feat(interface-types) Remove allocator index from `string.lower_memory` r=Hywan a=Hywan
This PR updates `string.lower_memory` to remove the allocator index. Indeed, the string pointer is assumed to be present on the stack.
Also, this PR updates `string.size` to pop, and not to peek, the string to compute the length from.
That way, it matches the WIT proposal.
Co-authored-by: Ivan Enderlin <ivan@mnt.io>
2020-04-09 08:05:50 +00:00
bors[bot]
45c412e8dd
Merge #1363
...
1363: fix(interface-types) Don't duplicate code in the binary encoder. r=MarkMcCaskey a=Hywan
Use the `ToBytes` implementation of `RecordType` to encode the inner
record type of a type, so that it avoids code duplication.
Co-authored-by: Ivan Enderlin <ivan@mnt.io>
2020-04-08 18:48:49 +00:00
Ivan Enderlin
4eae19ccc7
fix(interface-types) Don't duplicate code in the binary encoder.
...
Use the `ToBytes` implementation of `RecordType` to encode the inner
record type of a type, so that it avoids code duplication.
2020-04-07 14:29:57 +02:00
Ivan Enderlin
1687744ec9
feat(interface-types) string.size
pops the string.
...
Previously, `string.size` was just peeking the string.
2020-04-07 12:40:14 +02:00
Ivan Enderlin
bfa5821d98
test(interface-types) Update the test_executable_instruction
macro.
...
It provides a better failure message.
2020-04-07 12:34:30 +02:00
Ivan Enderlin
2fffee32a5
fix(interface-types) Remove allocator index from string.lower_memory
.
2020-04-07 12:34:07 +02:00
Ivan Enderlin
c0623b0f8c
doc(interface-types) Add record
instructions.
2020-04-07 11:58:13 +02:00
Ivan Enderlin
9f10b7ae50
doc(interface-types) Update from_interface_values
's doc.
...
Using `InterfaceValue::Record` explicitely doesn't change anything
since values are flatten, but it's better for a usual reading to avoid
confusion.
2020-04-06 08:13:10 +02:00
Ivan Enderlin
27053d5ca6
doc(interface-types) Rewrite record_lift_
documentation.
2020-04-06 08:09:10 +02:00
Ivan Enderlin
c2b1b87f9a
feat(interface-types) Use VecDeque
to remove unsafe code.
2020-04-06 07:55:56 +02:00
Ivan Enderlin
4faf827dc9
feat(interface-types) Avoid clones by using owned items in an iterator.
...
`into_iter` owned the item, so no need to clone when moving them in
the stack.
2020-04-06 07:54:51 +02:00
Ivan Enderlin
4ad3d7f123
doc(interface-types) Explain a part of an algorithm.
2020-04-04 08:10:38 +02:00
Ivan Enderlin
5119b6a58f
feat(interface-types) Simplify FlattenInterfaceValueIterator
with last_mut
.
2020-04-03 16:22:26 +02:00
Ivan Enderlin
e4921bd496
feat(interface-types) Use Vec::last_mut
to simplify code.
2020-04-03 16:20:22 +02:00
Ivan Enderlin
398d791c9f
fix(interface-types) Also apply another lazy evaluation in the deserializer.
2020-04-03 16:19:07 +02:00
Ivan Enderlin
e160feb99a
fix(interface-types) Use lazy evaluation in the deserializer.
2020-04-03 16:18:24 +02:00
Ivan Enderlin
d186142507
doc(interface-types) Fix a typo.
2020-04-03 16:16:53 +02:00
Ivan Enderlin
3159da5bfe
feat(interface-types) Add the Vec1
type to represent a non-empty vector.
...
`Vec1` is used by `RecordType` to ensure that a record have at least 1
field. Then an `InterfaceValue::Record` is ensured to get at least one
value with the type-checking pass.
2020-04-03 16:13:44 +02:00
Ivan Enderlin
6cef1c244a
doc(interface-types) Fix typos.
2020-04-03 14:46:59 +02:00
Ivan Enderlin
2011fda31d
chore(interface-types) Split the serde
module…
...
… into `serde/ser.rs` and `serde/de.rs`. I like smaller files.
2020-04-02 16:46:23 +02:00
Ivan Enderlin
be66ac8aa4
doc(interface-types) Improve serde
module documentation.
2020-04-02 16:41:03 +02:00
Ivan Enderlin
e385bf66c7
feat(interface-types) Make unwrap
s safe by introducing more errors.
2020-04-02 16:38:40 +02:00
Ivan Enderlin
b0af014339
doc(interface-types) Update an example.
2020-04-02 16:29:52 +02:00
Ivan Enderlin
ee0596d2c3
feat(interface-types) Restrict supported type in the Deserializer
.
...
`seq`, `map` and `tuple` for instance are not supported officially. It
was fun to play with it at the beginning, but it is time to remove it
to match the `Serializer` implementation.
2020-04-02 16:26:24 +02:00
Ivan Enderlin
d6f7e3ff02
doc(interface-types) Describe to_interface_value
.
2020-04-02 15:59:07 +02:00
Ivan Enderlin
f9832fecaf
feat(interface-types) Implement a serializer for WIT values.
2020-04-02 15:54:39 +02:00
Ivan Enderlin
8868d640fa
feat(interface-types) Rename from_values
to from_interface_values
.
2020-04-02 13:56:20 +02:00
Ivan Enderlin
7b182416df
feat(interface-types) Make serde
optional behind a feature flag.
2020-04-02 13:53:10 +02:00
Ivan Enderlin
f8507533fb
fix(interface-types) Fix a git-merge
issue.
2020-04-02 12:16:30 +02:00
Ivan Enderlin
bac56a6e0b
Merge branch 'master' into feat-interface-types-record-instructions
2020-04-02 12:10:01 +02:00
Ivan Enderlin
8f8c5f1bc8
chore(interface-types) Improve code readabilit of the record.lift
instruction.
2020-04-02 12:06:54 +02:00
Ivan Enderlin
0023eea275
feat(interface-types) Implement the record.lower
instruction.
2020-04-02 12:06:27 +02:00
Ivan Enderlin
11687c57ca
feat(interface-types) Encodes/decodes the record.lower
instruction.
2020-04-02 12:05:22 +02:00
Ivan Enderlin
b8ef82d1d0
test(interface-types) Rename test cases.
2020-04-02 11:59:35 +02:00
Ivan Enderlin
a1551b52af
test(interface-types) Rename a test case.
2020-04-02 11:58:05 +02:00
Ivan Enderlin
aab82c122d
feat(interface-types) Implement From<&Vec<InterfaceValue>>
for RecordType
.
2020-04-02 11:55:54 +02:00
Ivan Enderlin
3411ac7a1c
feat(interface-types) Move serde::InterfaceTypeIterator
into values::FlattenInterfaceValueIterator
.
2020-04-02 11:55:20 +02:00
Ivan Enderlin
5ba6fda1c9
chore(interface-types) Improve code readibility of string
instructions.
2020-04-02 11:51:34 +02:00
Ivan Enderlin
1a17cbb17e
test(interface-types) Deserialize WIT record to Rust struct.
2020-03-31 14:44:04 +02:00
Ivan Enderlin
02b7e21345
feat(interface-types) Implement the record.lift
instruction.
2020-03-31 12:34:32 +02:00
Ivan Enderlin
0af1076eee
feat(interface-types) Encodes/decodes the record.lift
instruction.
2020-03-31 08:17:52 +02:00
Ivan Enderlin
3655ef8bb7
chore(interface-types) Reorganize the serde module.
2020-03-31 08:02:46 +02:00
Ivan Enderlin
ee57b47770
feat(interface-types) Improve the Deserializer
API.
2020-03-31 07:47:54 +02:00
Ivan Enderlin
c87c2ef33b
feat(interface-values) Improve the TypeMismatch
error.
2020-03-31 07:47:15 +02:00