Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

feat: finish interpreter #595

Merged
merged 6 commits into from
Mar 5, 2024
Merged

Conversation

zeeshanlakhani
Copy link
Contributor

@zeeshanlakhani zeeshanlakhani commented Mar 3, 2024

Description

Finish Ipld <=> Wit interpreter across all available Val/Types.

fix: handle ints as floats in the interpreter (when given a float Wit type).

Includes

  • skip notifications when there are no receivers
  • add logging in wasm/guest-fn test to web server integration test
  • update Homestar-function(s) to use cargo-component 0.9 and update for breaking changes
  • readme updates around cargo-component
  • const recursion/grow-only defaults for stacker
  • remove most pattern-matching guards and move to nested matches in the interpreter
  • newly generated test wasms (= cid updates)
  • move to location/module-path in logs (from updated tracing-logfmt)

Closes

@zeeshanlakhani zeeshanlakhani requested a review from a team as a code owner March 3, 2024 05:15
Copy link

codecov bot commented Mar 3, 2024

Codecov Report

Attention: Patch coverage is 38.33049% with 724 lines in your changes are missing coverage. Please review.

Project coverage is 69.16%. Comparing base (2a2e9b0) to head (c8059b0).
Report is 1 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main     #595      +/-   ##
==========================================
- Coverage   70.79%   69.16%   -1.64%     
==========================================
  Files          95       95              
  Lines       12505    12953     +448     
==========================================
+ Hits         8853     8959     +106     
- Misses       3652     3994     +342     
Files Coverage Δ
homestar-functions/add/src/lib.rs 0.00% <ø> (ø)
homestar-invocation/src/task.rs 91.19% <100.00%> (ø)
homestar-invocation/src/task/instruction.rs 38.83% <100.00%> (ø)
homestar-runtime/src/logger.rs 100.00% <100.00%> (ø)
homestar-runtime/src/network/webserver/notifier.rs 73.52% <100.00%> (+2.56%) ⬆️
homestar-runtime/src/tasks/fetch.rs 100.00% <ø> (ø)
homestar-wasm/src/error.rs 0.00% <ø> (ø)
homestar-functions/test/src/lib.rs 69.53% <0.00%> (-6.25%) ⬇️
homestar-functions/add/src/bindings.rs 0.00% <0.00%> (ø)
homestar-wasm/src/wasmtime/ipld.rs 90.27% <87.98%> (+1.33%) ⬆️
... and 1 more

... and 16 files with indirect coverage changes

@zeeshanlakhani zeeshanlakhani force-pushed the zl/wit-to-ipld-to-wit-to-ipld branch 3 times, most recently from c265903 to 90a910a Compare March 5, 2024 03:41
fix: handle ints as floats in interpreter

Closes #61.

Includes
    - skip notification when there are no receivers
    - add logging in wasm/guest-fn test to webserver integration test
    - update homestar-function(s) to use cargo-component 0.9 and update for breaking changes
    - readme updates around cargo-component
    - const recursion/grow-only defaults for stacker
    - remove most pattern matching guards and move to nested matches in interpreter
    - newly generated test wasms (= cid updates)
    - move to location/module-path in logs
@zeeshanlakhani zeeshanlakhani force-pushed the zl/wit-to-ipld-to-wit-to-ipld branch from 90a910a to 8c8fd6d Compare March 5, 2024 04:29
Copy link
Contributor

@bgins bgins left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good! Left a few minor comments.

homestar-functions/README.md Outdated Show resolved Hide resolved
homestar-functions/README.md Outdated Show resolved Hide resolved
homestar-wasm/src/error.rs Outdated Show resolved Hide resolved
homestar-wasm/src/wasmtime/ipld.rs Outdated Show resolved Hide resolved
Zeeshan Lakhani and others added 4 commits March 5, 2024 18:14
Co-authored-by: Brian Ginsburg <7957636+bgins@users.noreply.github.com>
Signed-off-by: Zeeshan Lakhani <zeeshan.lakhani@gmail.com>
Co-authored-by: Brian Ginsburg <7957636+bgins@users.noreply.github.com>
Signed-off-by: Zeeshan Lakhani <zeeshan.lakhani@gmail.com>
Co-authored-by: Brian Ginsburg <7957636+bgins@users.noreply.github.com>
Signed-off-by: Zeeshan Lakhani <zeeshan.lakhani@gmail.com>
Co-authored-by: Brian Ginsburg <7957636+bgins@users.noreply.github.com>
Signed-off-by: Zeeshan Lakhani <zeeshan.lakhani@gmail.com>
@zeeshanlakhani zeeshanlakhani merged commit 90c6246 into main Mar 5, 2024
33 checks passed
@zeeshanlakhani zeeshanlakhani deleted the zl/wit-to-ipld-to-wit-to-ipld branch March 5, 2024 23:44
@release-plz-ipvm-wg release-plz-ipvm-wg bot mentioned this pull request Mar 6, 2024
bgins pushed a commit that referenced this pull request Mar 13, 2024
## 🤖 New release
* `homestar-runtime`: 0.2.0 -> 0.3.0 (⚠️ API breaking changes)
* `homestar-invocation`: 0.2.0 -> 0.3.0 (⚠️ API breaking changes)
* `homestar-wasm`: 0.2.0 -> 0.3.0 (⚠️ API breaking changes)
* `homestar-workflow`: 0.2.0 -> 0.3.0 (✓ API compatible changes)

### ⚠️ `homestar-runtime` breaking changes

```
--- failure enum_variant_added: enum variant added on exhaustive enum ---

Description:
A publicly-visible enum without #[non_exhaustive] has a new variant.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#enum-variant-new
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.29.1/src/lints/enum_variant_added.ron

Failed in:
  variant Command:Init in /tmp/.tmpgzntbb/homestar/homestar-runtime/src/cli.rs:152
```

### ⚠️ `homestar-invocation` breaking changes

```
--- failure enum_tuple_variant_field_added: pub enum tuple variant field added ---

Description:
An enum's exhaustive tuple variant has a new field, which has to be included when constructing or matching on this variant.
        ref: https://doc.rust-lang.org/reference/attributes/type_system.html#the-non_exhaustive-attribute
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.29.1/src/lints/enum_tuple_variant_field_added.ron

Failed in:
  field 1 of variant Nonce::Nonce96 in /tmp/.tmpgzntbb/homestar/homestar-invocation/src/task/instruction/nonce.rs:39
  field 1 of variant Nonce::Nonce128 in /tmp/.tmpgzntbb/homestar/homestar-invocation/src/task/instruction/nonce.rs:41

--- failure enum_variant_added: enum variant added on exhaustive enum ---

Description:
A publicly-visible enum without #[non_exhaustive] has a new variant.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#enum-variant-new
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.29.1/src/lints/enum_variant_added.ron

Failed in:
  variant Error:FromMultibase in /tmp/.tmpgzntbb/homestar/homestar-invocation/src/error.rs:38
  variant Error:FromMultibase in /tmp/.tmpgzntbb/homestar/homestar-invocation/src/error.rs:38
```

### ⚠️ `homestar-wasm` breaking changes

```
--- failure auto_trait_impl_removed: auto trait no longer implemented ---

Description:
A public type has stopped implementing one or more auto traits. This can break downstream code that depends on the traits being implemented.
        ref: https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.29.1/src/lints/auto_trait_impl_removed.ron

Failed in:
  type State is no longer Sync, in /tmp/.tmpgzntbb/homestar/homestar-wasm/src/wasmtime/world.rs:41
  type State is no longer Sync, in /tmp/.tmpgzntbb/homestar/homestar-wasm/src/wasmtime/world.rs:41

--- failure enum_variant_missing: pub enum variant removed or renamed ---

Description:
A publicly-visible enum has at least one variant that is no longer available under its prior name. It may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.29.1/src/lints/enum_variant_missing.ron

Failed in:
  variant InterpreterError::MapType, previously in file /tmp/.tmpEeUFOH/homestar-wasm/src/error.rs:36
```

<details><summary><i><b>Changelog</b></i></summary><p>

## `homestar-runtime`
<blockquote>

##
[0.3.0](homestar-runtime-v0.2.0...homestar-runtime-v0.3.0)
- 2024-03-13

### Added
- log the creation of the key file in `init`
- default `key-file` path to output directory
- support generating PEM encoded ed25519 keys from `init`
- translate `InquireError` to `miette::Result` in `init`
- recursively create config directory on `init`
- output a cleaner error when an invalid seed is passed to `init`
- support configuring key using `init` command
- run `init` command non-interactively if a TTY isn't detected
- add `--no-input` to `init` command
- add `--force` to `init` command for forcing destructive operations
- add `--quiet` flag to `init` command
- support `--dry-run` for `init` command
- add `init` command for initializing a settings file
- load settings from a well-known config file
- finish interpreter
([#595](#595))

### Fixed
- cleanup empty key file when bailing out of generating secp256k1
- parse ed25519 keys using the old strategy as a fallback
- use `ed25519-dalek` for parsing PEM-encoded
PKCS[#8](#8) ed25519 keys
- only constrain `inquire` and `derive_builder` by minor version
- hide `IpfsSettings` behind "ipfs" feature
- set `truncate(true)` when forcefully overwriting the config
- Update nonce schema with IPLD bytes
([#593](#593))

### Other
- Add workflow spans and every cli logging
([#603](#603))
- *(schemas)* update OpenRPC API doc and JSON schemas
- handle nonce as incoming string/arraybuf
([#611](#611))
- [chore(cargo)](deps): Bump toml from 0.8.10 to 0.8.11
([#612](#612))
- document that a random seed will be chosen if `key-seed` is unset
- document that if unset, a default path is used with `key-file`
- update help text for `key-file` to say it'll generate a key
- prompt for the key file as a `String` instead of `PathBuf`
- add a test for writing the generated config file + key
- split `force` field out of `OutputMode::File`
- remove `KeyTypeArg` in favor of using `KeyType`
- remove unneeded `defaults.toml`
- add simple tests for `init` command
- remove out of date TODO in `init.rs`
- remove unneeded `#[allow(dead_code)]` in `settings.rs`
- wrap all `init` args in `InitArgs` and consolidate handling
- sort imports in `cli/init.rs`
- remove docs link to private `homestar_runtime::db::pool`
- improve error for passing `--no-input` to `init` with no key
- remove extraneous `...` destructuring of `Command::Init`
- change `--config` flag to `--output` for `init` command
- move handling of `init` command to `init.rs`
- fix comments listing supported public key types
- *(schemas)* update OpenRPC API doc and JSON schemas
- *(schemas)* update OpenRPC API doc and JSON schemas
- poll DHT in background when worker runs up a workflow + dual-stack
webserver ([#590](#590))
- [chore(cargo)](deps): Bump config from 0.13.4 to 0.14.0
([#588](#588))
- [chore(cargo)](deps): Bump nix from 0.27.1 to 0.28.0
([#587](#587))
</blockquote>

## `homestar-invocation`
<blockquote>

##
[0.3.0](homestar-invocation-v0.2.0...homestar-invocation-v0.3.0)
- 2024-03-13

### Added
- finish interpreter
([#595](#595))

### Fixed
- Update nonce schema with IPLD bytes
([#593](#593))

### Other
- handle nonce as incoming string/arraybuf
([#611](#611))
- test json/ipld/nonce
([#610](#610))
- poll DHT in background when worker runs up a workflow + dual-stack
webserver ([#590](#590))
</blockquote>

## `homestar-wasm`
<blockquote>

##
[0.3.0](homestar-wasm-v0.2.0...homestar-wasm-v0.3.0)
- 2024-03-13

### Added
- finish interpreter
([#595](#595))

### Other
- Add workflow spans and every cli logging
([#603](#603))
- handle incoming as Wit integer, but argument is float
([#609](#609))
- handle ref/non-ref case with rigor
([#608](#608))
- doc interpreter ([#607](#607))
- poll DHT in background when worker runs up a workflow + dual-stack
webserver ([#590](#590))
- wasmtime 17->18 ([#585](#585))
</blockquote>

## `homestar-workflow`
<blockquote>

##
[0.3.0](homestar-workflow-v0.2.0...homestar-workflow-v0.3.0)
- 2024-03-13

### Other
- handle nonce as incoming string/arraybuf
([#611](#611))
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/MarcoIeni/release-plz/).

---------

Signed-off-by: release-plz-ipvm-wg[bot] <144082651+release-plz-ipvm-wg[bot]@users.noreply.github.com>
Co-authored-by: release-plz-ipvm-wg[bot] <144082651+release-plz-ipvm-wg[bot]@users.noreply.github.com>
Co-authored-by: release-plz-ipvm-wg[bot] <release-plz-ipvm-wg[bot]@users.noreply.github.com>
@release-plz-ipvm-wg release-plz-ipvm-wg bot mentioned this pull request Mar 13, 2024
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[bug]: Floats ending in .0 converted to integers Bidirectional IPLD from/to WIT interpreter
2 participants