From 61c60aec38c0629ddd8f21a584a33ad65ab8770f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ralph=20K=C3=BCpper?= Date: Tue, 22 Sep 2026 16:52:39 +0200 Subject: [PATCH 1/2] fix(benchmarks): fingerprint all Cargo inputs except workspace release version (#10977) Replaces the profile-only Cargo.toml extraction with whole-root-manifest hashing that normalizes only the single-line [workspace.package].version value, so dependency, feature, member and edition changes invalidate the published benchmark evidence again while a release bump does not. Scoped to that table, so dependency-table `version` fields stay significant. --- benchmarks/public_baseline.py | 57 +++------ changelog.d/10977-public-baseline-manifest.md | 1 + tests/test_public_baseline.py | 115 +++++++++++++----- 3 files changed, 106 insertions(+), 67 deletions(-) create mode 100644 changelog.d/10977-public-baseline-manifest.md diff --git a/benchmarks/public_baseline.py b/benchmarks/public_baseline.py index 64d548ad4a..41026cf51f 100755 --- a/benchmarks/public_baseline.py +++ b/benchmarks/public_baseline.py @@ -106,13 +106,11 @@ def _git(*args: str) -> str: ).stdout.strip() -# The workspace package version is bumped on every release and does not -# affect benchmark behaviour, but `Cargo.toml` is a fingerprinted source -# input. Hashing its raw bytes made every version bump invalidate the -# recorded baseline, reddening the freshness gate on every subsequent PR. -# Normalize the version line so only benchmark-relevant Cargo.toml changes -# (dependencies, profiles) move the fingerprint. -_CARGO_VERSION_RE = re.compile(rb'(?m)^version = "[^"]*"') +# Match the release version's single-line spelling, preserving all other bytes. +# Unrecognized spellings stay fingerprinted rather than widening the exemption. +_CARGO_VERSION_RE = re.compile( + rb"""^([ \t]*version[ \t]*=[ \t]*)(["'])[0-9][0-9A-Za-z.+-]*\2([ \t]*(?:#[^\n]*)?\n?$)""" +) def portable_path(value: Any) -> str: @@ -145,36 +143,23 @@ def _is_resolved_path(value: Any) -> bool: return bool(text) and (os.path.isabs(text) or "/" in text or "\\" in text) -def _cargo_profile_tables(data: bytes) -> bytes: - """The `[profile.*]` tables of a Cargo manifest, and nothing else. - - #7282: `Cargo.toml` was fingerprinted whole-file (modulo the version line, - which #7264's normalization already neutralized). Everything else in it — - a new `perry-ext-*` workspace member, a dependency bump, a `[workspace]` - restructure — invalidated the published baseline without being able to - change a measured number. #6758/#6761's restructuring tripped it with the - `.ts` kernels untouched, and the artifact then sat 40+ commits stale on a - REQUIRED check, so every later `lint` step never ran at all and every merge - needed an `--admin` bypass. - - What genuinely can move a number is the build profile: `opt-level`, `lto`, - `codegen-units`, `panic`. So only those tables participate. +def _normalize_cargo_workspace_version(data: bytes) -> bytes: + """Ignore only the release version in `[workspace.package]`. - Extraction is deliberately textual and conservative — a TOML parser is not - guaranteed available in the CI Python, and this must agree byte-for-byte - between the generator and the checker. A section header ends the capture - unless it is itself a `[profile...` header, so `[profile.release.package.x]` - subtables are kept. + Keep profiles, dependency versions/features, workspace membership, and all + other manifest bytes. In particular, a dependency table's `version` is a + benchmark input, even when it has the same spelling as the release field. """ - kept: list[bytes] = [] - capturing = False + lines: list[bytes] = [] + workspace_package = False for line in data.splitlines(keepends=True): stripped = line.strip() - if stripped.startswith(b"[") and stripped.endswith(b"]"): - capturing = stripped.startswith(b"[profile") - if capturing: - kept.append(line) - return b"".join(kept) + if stripped.startswith(b"["): + workspace_package = stripped.split(b"#", 1)[0].strip() == b"[workspace.package]" + if workspace_package: + line = _CARGO_VERSION_RE.sub(rb"\g<1>\g<2>0.0.0\g<2>\g<3>", line) + lines.append(line) + return b"".join(lines) def _normalize_checkout_newlines(data: bytes) -> bytes: @@ -188,11 +173,7 @@ def _fingerprint_bytes(name: str) -> bytes: # checkouts) uses LF; that transport detail must not invalidate evidence. data = _normalize_checkout_newlines((ROOT / name).read_bytes()) if name == "Cargo.toml": - # The version normalization stays: `[workspace.package] version` is not - # in a profile table, but keeping the substitution makes the intent - # explicit if the extraction below is ever widened. - data = _CARGO_VERSION_RE.sub(b'version = "0.0.0"', data) - data = _cargo_profile_tables(data) + data = _normalize_cargo_workspace_version(data) return data diff --git a/changelog.d/10977-public-baseline-manifest.md b/changelog.d/10977-public-baseline-manifest.md new file mode 100644 index 0000000000..0746c2a910 --- /dev/null +++ b/changelog.d/10977-public-baseline-manifest.md @@ -0,0 +1 @@ +Fix public benchmark input hashing to retain the complete root Cargo manifest while normalizing only the value of `[workspace.package].version`. Profiles, dependencies, features, workspace members and edition changes invalidate evidence. Tests exercise Git-discovered fingerprints and the validator in both directions. The existing artifact remains stale until a conforming benchmark regeneration; this change does not relabel old measurements as fresh. diff --git a/tests/test_public_baseline.py b/tests/test_public_baseline.py index dbe22c1542..5f2b45b3d4 100644 --- a/tests/test_public_baseline.py +++ b/tests/test_public_baseline.py @@ -1,7 +1,12 @@ import json +import subprocess import tempfile import unittest from pathlib import Path +from datetime import datetime, timezone +from unittest.mock import patch + +from benchmarks import public_baseline as pb from benchmarks.benchmark_gate import ArtifactError, build_artifact from benchmarks.public_baseline import ( @@ -11,8 +16,7 @@ README_START, ROOT, SOURCE_PATHS, - _CARGO_VERSION_RE, - _cargo_profile_tables, + _normalize_cargo_workspace_version, _is_resolved_path, _normalize_checkout_newlines, _replace_block, @@ -30,6 +34,72 @@ def metric(values): return {"wall_ms": distribution(values), "rss_kb": distribution([100] * len(values))} +class CargoFingerprintTests(unittest.TestCase): + """Exercise Git discovery, byte normalization, hashing and the real validator.""" + + MANIFEST = b'''[workspace] +members = ["crates/perry"] +[workspace.package] +version = "0.5.1635" +edition = "2021" +[workspace.dependencies] +serde = { version = "1.0", features = ["derive"] } +[workspace.dependencies.other] +version = "2.0" +[profile.release] +opt-level = 3 +''' + + def setUp(self): + directory = tempfile.TemporaryDirectory() + self.addCleanup(directory.cleanup) + root = Path(directory.name) + self.manifest = root / "Cargo.toml" + self.manifest.write_bytes(self.MANIFEST) + for args in (("init", "-q"), ("add", "Cargo.toml")): + subprocess.run(["git", *args], cwd=root, check=True, capture_output=True) + root_patch = patch.object(pb, "ROOT", root) + root_patch.start() + self.addCleanup(root_patch.stop) + self.original = pb.tracked_fingerprint(SOURCE_PATHS) + # In-memory validator fixture only; never rewrite published evidence. + self.artifact = json.loads(pb.DEFAULT_ARTIFACT.read_text()) + self.artifact["generated_at"] = datetime.now(timezone.utc).isoformat() + self.artifact["freshness"] = { + "source_fingerprint": self.original, + "harness_fingerprint": pb.tracked_fingerprint(HARNESS_PATHS), + } + pb.validate_public(self.artifact, 45) + + def test_version_only_bump_keeps_fingerprint_and_gate_green(self): + changed = self.MANIFEST.replace(b'0.5.1635', b'0.5.1636') + self.assertNotEqual(changed, self.MANIFEST) + self.manifest.write_bytes(changed) + self.assertEqual(pb.tracked_fingerprint(SOURCE_PATHS), self.original) + pb.validate_public(self.artifact, 45) + + def test_real_manifest_changes_move_fingerprint_and_turn_gate_red(self): + changes = ( + ("profile", b'opt-level = 3', b'opt-level = 2'), + ("inline dependency", b'version = "1.0"', b'version = "1.1"'), + ("dependency table", b'version = "2.0"', b'version = "2.1"'), + ("feature flags", b'["derive"]', b'["derive", "rc"]'), + ("workspace member", b'"crates/perry"', b'"crates/other"'), + ("edition", b'edition = "2021"', b'edition = "2024"'), + ) + for label, old, new in changes: + with self.subTest(input=label): + changed = self.MANIFEST.replace(old, new) + self.assertNotEqual(changed, self.MANIFEST) + self.manifest.write_bytes(changed) + self.assertNotEqual(pb.tracked_fingerprint(SOURCE_PATHS), self.original) + with self.assertRaisesRegex(ArtifactError, "benchmark inputs changed"): + pb.validate_public(self.artifact, 45) + self.manifest.write_bytes(self.MANIFEST) + self.assertEqual(pb.tracked_fingerprint(SOURCE_PATHS), self.original) + pb.validate_public(self.artifact, 45) + + class PublicBaselineTests(unittest.TestCase): @staticmethod def honest_metadata(): @@ -133,33 +203,20 @@ def test_generated_readme_reports_losses_and_wins(self): self.assertIn("win vs both", block) self.assertIn("`abcdef123456`", block) - def test_cargo_version_bump_does_not_change_fingerprint_input(self): - # A workspace version bump must not move the source fingerprint: the - # volatile version line is normalized out before hashing. Regression - # guard — before this, the freshness gate reddened on every PR that - # followed a version bump (Cargo.toml is a fingerprinted source path). - def normalize(data): - normalized = _CARGO_VERSION_RE.sub(b'version = "0.0.0"', data) - return _cargo_profile_tables(normalized) - - base = ( - b'[workspace.package]\nversion = "0.5.1258"\nedition = "2021"\n' - b'[profile.release]\nopt-level = 3\n' - ) - bumped = ( - b'[workspace.package]\nversion = "0.5.1300"\nedition = "2021"\n' - b'[profile.release]\nopt-level = 3\n' - ) - self.assertEqual(normalize(base), normalize(bumped)) - - # Workspace/dependency plumbing is outside the extract, while a build - # profile change must still move it. - dependency_change = base.replace( - b"[profile.release]", b'foo = "1"\n[profile.release]' - ) - profile_change = base.replace(b"opt-level = 3", b"opt-level = 2") - self.assertEqual(normalize(base), normalize(dependency_change)) - self.assertNotEqual(normalize(base), normalize(profile_change)) + def test_only_workspace_package_version_value_is_normalized(self): + for quote in (b'"', b"'"): + with self.subTest(quote=quote): + base = ( + b'[workspace.package] # release metadata\n' + b' version = ' + quote + b'0.5.1635' + quote + b' # release\n' + b'edition = "2021"\n' + b'[workspace.dependencies.serde] # dependency metadata\n' + b'version = "1.0"\n' + ) + self.assertEqual( + _normalize_cargo_workspace_version(base), + base.replace(b'0.5.1635', b'0.0.0'), + ) def test_fingerprint_input_is_checkout_line_ending_independent(self): self.assertEqual( From 28eff860aa7169b7166a5dd8790915652e5b1fe9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ralph=20K=C3=BCpper?= Date: Tue, 22 Sep 2026 19:12:15 +0200 Subject: [PATCH 2/2] chore: release #10977 as v0.5.1637 --- CLAUDE.md | 2 +- Cargo.lock | 124 ++++++++++++++++++++++++++--------------------------- Cargo.toml | 2 +- 3 files changed, 64 insertions(+), 64 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 73b1ed97e1..034c59f8ff 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -8,7 +8,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co Perry is a native TypeScript compiler written in Rust that compiles TypeScript source code directly to native executables. It uses SWC for TypeScript parsing and LLVM for code generation. -**Current Version:** 0.5.1636 +**Current Version:** 0.5.1637 ## TypeScript Parity Status diff --git a/Cargo.lock b/Cargo.lock index 23ae07de62..022f4c9b86 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5532,7 +5532,7 @@ checksum = "1473d470930ed48574515a25df34900f3af89c6fa422d903e019121312a9f13e" [[package]] name = "perry" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "anyhow", "base64 0.22.1", @@ -5596,7 +5596,7 @@ dependencies = [ [[package]] name = "perry-api-manifest" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "perry-dispatch", "serde", @@ -5604,7 +5604,7 @@ dependencies = [ [[package]] name = "perry-audio-miniaudio" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "cc", "libc", @@ -5613,7 +5613,7 @@ dependencies = [ [[package]] name = "perry-codegen" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "aho-corasick", "anyhow", @@ -5630,7 +5630,7 @@ dependencies = [ [[package]] name = "perry-codegen-arkts" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "anyhow", "perry-hir", @@ -5638,7 +5638,7 @@ dependencies = [ [[package]] name = "perry-codegen-glance" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "anyhow", "perry-hir", @@ -5646,7 +5646,7 @@ dependencies = [ [[package]] name = "perry-codegen-js" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "anyhow", "perry-dispatch", @@ -5655,7 +5655,7 @@ dependencies = [ [[package]] name = "perry-codegen-swiftui" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "anyhow", "perry-hir", @@ -5663,7 +5663,7 @@ dependencies = [ [[package]] name = "perry-codegen-wasm" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "anyhow", "base64 0.22.1", @@ -5675,7 +5675,7 @@ dependencies = [ [[package]] name = "perry-codegen-wear-tiles" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "anyhow", "perry-hir", @@ -5683,7 +5683,7 @@ dependencies = [ [[package]] name = "perry-container-compose" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "async-trait", "clap", @@ -5707,14 +5707,14 @@ dependencies = [ [[package]] name = "perry-container-e2e" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "anyhow", ] [[package]] name = "perry-diagnostics" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "serde", "serde_json", @@ -5722,7 +5722,7 @@ dependencies = [ [[package]] name = "perry-dispatch" -version = "0.5.1636" +version = "0.5.1637" [[package]] name = "perry-doc-fixture-my-bindings" @@ -5733,7 +5733,7 @@ dependencies = [ [[package]] name = "perry-doc-tests" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "anyhow", "clap", @@ -5748,7 +5748,7 @@ dependencies = [ [[package]] name = "perry-ext-ads" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "block2", "objc2", @@ -5758,7 +5758,7 @@ dependencies = [ [[package]] name = "perry-ext-argon2" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "argon2", "perry-ffi", @@ -5767,7 +5767,7 @@ dependencies = [ [[package]] name = "perry-ext-bcrypt" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "bcrypt", "perry-ffi", @@ -5775,7 +5775,7 @@ dependencies = [ [[package]] name = "perry-ext-better-sqlite3" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "perry-ffi", "rusqlite", @@ -5783,7 +5783,7 @@ dependencies = [ [[package]] name = "perry-ext-cheerio" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "perry-ffi", "scraper", @@ -5791,7 +5791,7 @@ dependencies = [ [[package]] name = "perry-ext-decimal" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "perry-ffi", "rust_decimal", @@ -5799,7 +5799,7 @@ dependencies = [ [[package]] name = "perry-ext-ethers" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "perry-ffi", "rand 0.10.2", @@ -5807,7 +5807,7 @@ dependencies = [ [[package]] name = "perry-ext-events" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "perry-ffi", "perry-runtime", @@ -5815,7 +5815,7 @@ dependencies = [ [[package]] name = "perry-ext-fetch" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "bytes", "lazy_static", @@ -5828,7 +5828,7 @@ dependencies = [ [[package]] name = "perry-ext-http" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "base64 0.22.1", "bytes", @@ -5860,7 +5860,7 @@ dependencies = [ [[package]] name = "perry-ext-ioredis" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "lazy_static", "perry-ffi", @@ -5870,7 +5870,7 @@ dependencies = [ [[package]] name = "perry-ext-mongodb" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "bson", "futures-util", @@ -5882,7 +5882,7 @@ dependencies = [ [[package]] name = "perry-ext-net" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "bytes", "perry-ffi", @@ -5897,7 +5897,7 @@ dependencies = [ [[package]] name = "perry-ext-nodemailer" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "lettre", "perry-ffi", @@ -5907,7 +5907,7 @@ dependencies = [ [[package]] name = "perry-ext-parcel-watcher" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "notify", "perry-ffi", @@ -5919,7 +5919,7 @@ dependencies = [ [[package]] name = "perry-ext-pdf" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "perry-ffi", "printpdf", @@ -5927,7 +5927,7 @@ dependencies = [ [[package]] name = "perry-ext-sharp" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "fast_image_resize", "image", @@ -5938,7 +5938,7 @@ dependencies = [ [[package]] name = "perry-ext-streams" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "lazy_static", "perry-ffi", @@ -5947,7 +5947,7 @@ dependencies = [ [[package]] name = "perry-ext-typescript" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "anyhow", "perry-ffi", @@ -5967,7 +5967,7 @@ dependencies = [ [[package]] name = "perry-ext-undici" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "perry-ffi", "perry-runtime", @@ -5976,7 +5976,7 @@ dependencies = [ [[package]] name = "perry-ext-ws" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "futures-util", "lazy_static", @@ -5989,7 +5989,7 @@ dependencies = [ [[package]] name = "perry-ext-zlib" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "brotli", "flate2", @@ -5999,7 +5999,7 @@ dependencies = [ [[package]] name = "perry-ffi" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "dashmap 6.2.1", "once_cell", @@ -6009,7 +6009,7 @@ dependencies = [ [[package]] name = "perry-hir" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "anyhow", "perry-api-manifest", @@ -6029,11 +6029,11 @@ dependencies = [ [[package]] name = "perry-native-registration" -version = "0.5.1636" +version = "0.5.1637" [[package]] name = "perry-parser" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "anyhow", "perry-diagnostics", @@ -6046,7 +6046,7 @@ dependencies = [ [[package]] name = "perry-perex" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "perex", "regex", @@ -6054,7 +6054,7 @@ dependencies = [ [[package]] name = "perry-runtime" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "ahash", "base64 0.22.1", @@ -6112,14 +6112,14 @@ dependencies = [ [[package]] name = "perry-runtime-static" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "perry-runtime", ] [[package]] name = "perry-stdlib" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "aes 0.8.4", "aes 0.9.1", @@ -6202,21 +6202,21 @@ dependencies = [ [[package]] name = "perry-stdlib-static" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "perry-stdlib", ] [[package]] name = "perry-transform" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "perry-hir", ] [[package]] name = "perry-ui" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "dirs", "perry-ffi", @@ -6226,7 +6226,7 @@ dependencies = [ [[package]] name = "perry-ui-android" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "base64 0.22.1", "jni", @@ -6241,7 +6241,7 @@ dependencies = [ [[package]] name = "perry-ui-geisterhand" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "rand 0.10.2", "serde", @@ -6251,7 +6251,7 @@ dependencies = [ [[package]] name = "perry-ui-gtk4" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "base64 0.22.1", "cairo-rs 0.22.9", @@ -6274,7 +6274,7 @@ dependencies = [ [[package]] name = "perry-ui-ios" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "base64 0.22.1", "block2", @@ -6291,7 +6291,7 @@ dependencies = [ [[package]] name = "perry-ui-macos" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "base64 0.22.1", "block2", @@ -6308,7 +6308,7 @@ dependencies = [ [[package]] name = "perry-ui-model" -version = "0.5.1636" +version = "0.5.1637" [[package]] name = "perry-ui-test" @@ -6319,11 +6319,11 @@ dependencies = [ [[package]] name = "perry-ui-testkit" -version = "0.5.1636" +version = "0.5.1637" [[package]] name = "perry-ui-tvos" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "base64 0.22.1", "block2", @@ -6340,7 +6340,7 @@ dependencies = [ [[package]] name = "perry-ui-visionos" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "base64 0.22.1", "block2", @@ -6357,7 +6357,7 @@ dependencies = [ [[package]] name = "perry-ui-watchos" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "block2", "libc", @@ -6371,7 +6371,7 @@ dependencies = [ [[package]] name = "perry-ui-windows" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "base64 0.22.1", "libc", @@ -6390,7 +6390,7 @@ dependencies = [ [[package]] name = "perry-ui-windows-winui" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "base64 0.22.1", "libc", @@ -6403,7 +6403,7 @@ dependencies = [ [[package]] name = "perry-updater" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "anyhow", "base64 0.22.1", @@ -6418,7 +6418,7 @@ dependencies = [ [[package]] name = "perry-wasm-host" -version = "0.5.1636" +version = "0.5.1637" dependencies = [ "wasmi", ] diff --git a/Cargo.toml b/Cargo.toml index bc4527a9d5..32205fc892 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -315,7 +315,7 @@ codegen-units = 1 codegen-units = 1 [workspace.package] -version = "0.5.1636" +version = "0.5.1637" edition = "2021" license = "MIT" repository = "https://github.com/PerryTS/perry"