Releases: openvm-org/openvm
v1.4.1
This release updates to stark-backend v1.2.1 for CUDA performance gains in the backend. Other changes include:
Added
- (CLI) Add configurable segmentation arguments to
cargo openvm provecommands.
Changed
- (Toolchain) Update
cargo openvm buildto use Rust nightly versionnightly-2025-08-02. - (Primitives Library) Fix in
openvm-algebra-complex-macrosto ensureconstbyte arrays have proper memory alignment. - (Executor) Modified
VirtualMachine::build_metered_ctxto take the program (&VmExe<Val<E::SC>>) as an argument. - (Prover/Executor) Changed default segmentation limits and updated segmentation logic.
What's Changed
- chore: mention "keygen before commit" in the docs by @Golovanov399 in #2111
- ci(vocs): update pnpm lock file by @jonathanpwang in #2112
- ci(vocs): hard copy all symlink dirs by @jonathanpwang in #2113
- ci(ami): add RunsOn image for cuda 12.9 by @jonathanpwang in #2115
- fix(ci/docs): recommend CUDA toolkit 12.9 by @jonathanpwang in #2116
- ci: build docs with cuda feature by @jonathanpwang in #2117
- ci: add release workflow to upload agg,halo2 pk to s3 by @jonathanpwang in #2114
- chore(audit): ignore cargo audit false positive by @jonathanpwang in #2120
- docs: add whitepaper link to vocs by @Qumeric in #2119
- ci: skip debug during CI air test by @stephenh-axiom-xyz in #2118
- fix: reduce threads per block for FRI tracegen launcher by @stephenh-axiom-xyz in #2124
- ci: script + workflow to run clang-tidy during CUDA lints by @stephenh-axiom-xyz in #2122
- docs(vocs): use versioned rustdocs redirect by @jonathanpwang in #2125
- perf: pass state variables by value in
tcoexec handlers by @shuklaayush in #2121 - chore(cuda): use newer ami by @gaxiom in #2131
- ci(cuda-13): clean git cache by @jonathanpwang in #2132
- perf: only do exit check for instructions that can exit by @shuklaayush in #2126
- ci(runs-on): set CUDA_ARCH env var in pre-install by @jonathanpwang in #2133
- chore(cuda): update
cuda-backendwith Virtual Memory Manager and NTT refactor by @gaxiom in #2127 - fix: add std feature to openvm-prof serde by @stephenh-axiom-xyz in #2135
- fix: take program air height into account in metered execution by @shuklaayush in #2137
- chore(cuda): update poseidon2 kernel to use memory manager by @gaxiom in #2108
- fix: ensure segments are below thresholds by @shuklaayush in #2138
- fix: log more information for segments by @shuklaayush in #2143
- feat: E2 supports suspension & VmExecState supports clone by @nyunyunyunyu in #2140
- chore: Rename
execute_metered_until_suspensiontoexecute_metered_until_suspendby @nyunyunyunyu in #2144 - chore: update install link by @trevor-trinh in #2146
- chore: bump stark-backend to
v1.2.1-rc.2by @jonathanpwang in #2148 - chore(cuda): BabyBear unified + CUDA_DEBUG + opener in natural order by @gaxiom in #2149
- fix: Over-align public constants in moduli_init by @Avaneesh-axiom in #2150
- chore: update
openvm buildnightly version by @jonathanpwang in #2152 - fix: execution from non-zero
instretby @jonathanpwang in #2155 - chore: add sdk app prove without verify by @luffykai in #2164
- chore(cuda): keccakf memcpy handling of padding by @jonathanpwang in #2167
- feat(cuda): VPMM v3 and async app prover by @gaxiom in #2165
- chore: Remove send + sync bound on executor by @Schaeff in #2156
- feat(cuda): use VPMM v3.1 by @gaxiom in #2169
- docs(transpiler): clarify
itoffunction definition by @jonathanpwang in #2170 - audit: v1.4.1 report by @jonathanpwang in #2172
- chore(docs): update link to example repo by @jonathanpwang in #2176
- fix(cuda): sync memory subtree streams before drop by @jonathanpwang in #2175
- fix: Expose CUDA primitives by @qwang98 in #2179
- feat(cli): add
SegmentationArgstoprovecommand by @jonathanpwang in #2178 - release: v1.4.1 by @jonathanpwang in #2171
New Contributors
- @trevor-trinh made their first contribution in #2146
- @Schaeff made their first contribution in #2156
- @qwang98 made their first contribution in #2179
Full Changelog: v1.4.0...v1.4.1
v1.4.0
This release focuses on performance:
- Execution was rewritten for much better performance and to support our distributed proving architecture.
- All proving after execution, including trace generation, is now supported on Nvidia GPUs through new CUDA kernels and Rust bindings.
Users are recommended to upgrade all guest and host crates to openvm v1.4.0.
See CHANGELOG.md for more details.
What's Changed
- feat: make merkle tree finalization parallel by @Golovanov399 in #1701
- fix(new-execution): return segments in
execute_meteredby @shuklaayush in #1702 - refactor: Move
StreamsintoVmStateMutby @nyunyunyunyu in #1707 - fix(new-execution): remove hardcoded trace heights by @shuklaayush in #1715
- feat: Do not build a
BTreeMapwhen we don't need to by @Golovanov399 in #1718 - feat: new execution e4 for memory adapters by @Golovanov399 in #1733
- feat: use memmap instead of paged_vecs on platforms that support it by @pjabbarzade in #1734
- chore: merge
mainbranch by @jonathanpwang in #1740 - chore: add serde to segment by @luffykai in #1749
- fix(new-execution): cleanup
vm.rsby @shuklaayush in #1751 - ci: add benches for
execute_meteredby @shuklaayush in #1752 - chore(new-execution): clk/cycles -> instret/insns by @shuklaayush in #1755
- chore: merge
mainby @jonathanpwang in #1759 - feat: generalize E3 with generic
RecordArenaby @jonathanpwang in #1761 - chore: add execution insn/s logging by @jonathanpwang in #1764
- fix(new-execution): prevent segmentation in single segment executor by @shuklaayush in #1766
- fix(new-execution): use
StdRngfor deterministic execution by @shuklaayush in #1769 - perf(new-execution): use page-based approach for merkle tree metering by @shuklaayush in #1770
- fix(ci): make codspeed instrumentation dispatch only by @shuklaayush in #1771
- feat: RecordArena implementation on DenseRecordArena for variable length records by @arayikhalatyan in #1775
- chore(ci): fix REF_HASH calculation by @jonathanpwang in #1776
- feat(sdk): derive Debug traits in config by @Qumeric in #1777
- chore: make testing ProgramDummyAir mod public by @stephenh-axiom-xyz in #1781
- chore: make RANGE_CHECKER_BUS pub by @stephenh-axiom-xyz in #1783
- chore: add 'allocated' method to DenseRecordArena by @arayikhalatyan in #1785
- chore: fix last chore by @arayikhalatyan in #1786
- refactor(new-execution): make
ExecutionCtrls stateless by @shuklaayush in #1789 - fix: proper memory access functions in
execute_e1_implin the native poseidon chip by @Golovanov399 in #1790 - chore: use tracing spans for metrics by @jonathanpwang in #1791
- chore: make memory volatile and persistent boundary chips pub by @stephenh-axiom-xyz in #1792
- refactor: use PagedVec for TracingMemory metadata storage by @jonathanpwang in #1793
- feat(new-execution): change default
PAGE_BITSvalue in e2 to 6 by @shuklaayush in #1794 - fix(new-execution): no segmentation in single segment executor by @shuklaayush in #1796
- ci(new-execution): run codspeed instrumentation on push by @shuklaayush in #1797
- feat(new-execution): ignore register addr space for memory ops by @shuklaayush in #1798
- fix(new-execution): remove duplicate assignment by @shuklaayush in #1799
- fix: account for E1 / E2 execution in metrics summary by @yi-sun in #1800
- fix(new-execution): disable loads from address space 1 by @shuklaayush in #1802
- fix(new-execution): adapter offset should be boundary_idx + 1 by @shuklaayush in #1803
- chore(ci): fix the instance type for codspeed benches by @jonathanpwang in #1811
- chore: update
stark-backendcommit by @jonathanpwang in #1812 - feat: extract_layout implementation for native Poseidon2 by @stephenh-axiom-xyz in #1813
- chore: make plonky3 nightly-features optional by @jonathanpwang in #1818
- feat: modify fri records + tests by @arayikhalatyan in #1819
- fix: native Poseidon2 record size should be in bytes instead of u32 by @stephenh-axiom-xyz in #1821
- refactor(new-execution): optimize E1/E2 implementation by @nyunyunyunyu in #1827
- fix(openvm-prof): replace unwraps with better error strings by @shuklaayush in #1833
- feat: update architecture for generic
ProverBackends by @jonathanpwang in #1836 - feat: use cached max trace heights in leaf/internal aggregation by @stephenh-axiom-xyz in #1839
- fix(new-execution): add register contribtions on
reset_segmentby @shuklaayush in #1843 - chore: merge
mainby @jonathanpwang in #1844 - feat: Add pubs needed for gpu by @Golovanov399 in #1860
- feat: RecordSeeker::get_aligned_record_size by @arayikhalatyan in #1863
- chore: General Sys phantom by @nyunyunyunyu in #1867
- fix(new-execution): don't pass total_widths to execute_metered by @shuklaayush in #1868
- feat: public sha2 trace by @matejav in #1881
- feat(new-execution): optimize algebra extension e1/e2 execution by @shuklaayush in #1882
- fix(new-execution): use smaller fib number in
verify_starktest by @shuklaayush in #1893 - chore: move record arena implementation to separate file by @jonathanpwang in #1894
- fix(new-execution): assign bls12_381 output properly by @shuklaayush in #1895
- chore: Optimistic E3 Execution for Poseidon2 Chip by @nyunyunyunyu in #1896
- perf: remove
stepfromProgramby @jonathanpwang in #1897 - chore: use explicit
Result<_, ExecutionError>andpre_compute*returnsStaticProgramErrorby @jonathanpwang in #1898 - chore(perf): use constant for address space in
tracing_readwhen possible by @jonathanpwang in #1899 - fix(new-execution): replace segmentation strategy with segmentation limits by @shuklaayush in #1901
- perf(new-execution): use unchecked ops in e2 by @shuklaayush in #1902
- feat: add host configurable memory cell type to
MemoryConfigby @jonathanpwang in #1903 - fix: native
FriReducedOpeningRecordsize calculation by @teokitan in #1905 - chore: make
SdkVmConfig::to_innerpub by @jonathanpwang in #1906 - chore:
PairingProverExtis vacuous by @jonathanpwang in #1907 - chore: clean up benchmarks by @jonathanpwang in #1908
- fix(metrics): cycle tracker spans recorded only with "perf-metrics" by @jonathanpwang in #1910
- chore(tracing): trace individual AIR tracegen by @jonathanpwang in #1911
- feat:
generate_app_proofalways verifies segment proofs by @jonathanpwang in #1912 - chore: remove
DenseRecordArena::current_sizeby @jonathanpwang in #1913 - feat:
execute_meteredreturns final memory by @jonathanpwang in #1914 - feat: add "stark-debug" feature by @jonathanpwang in #1915
- fix(docs): update isa spec to specify alignment requirements by @shuklaayush in #1917
- fix(new-execution): always inline
execute_implby @shuklaayush in #1919 - fix(...
v1.3.0
No circuit constraints or verifying keys were changed in this release.
A substantial refactor has been done to the guest libraries to separate the low level Rust bindings for OpenVM intrinsic instructions from the higher level user interface. For each VM extension, the openvm-$name-guest crate is now a primitives library containing only the Rust bindings for the intrinsic instructions and essential logic related to the extension (e.g., ECDSA signature verification). We introduce new guest libraries as standalone Rust crates which provide the high-level interfaces guest programs should use to interact with the associated VM extensions.
We also add a new guest library openvm-verify-stark which provides functionality to verify OpenVM STARK proofs from Rust programs using acceleration from the native field arithmetic VM extension.
Users are advised to switch to using the new guest libraries.
What's Changed
- chore(ecc-guest): remove
k256, p256modules and fix guest-libs to allow patching (#1708) (Jonathan Wang) - feat: optimize
Group::is_identity(#1709) (Avaneesh-axiom) - perf(ecc-guest): optimize setup handling in ecc guest bindings (#1706) (Jonathan Wang)
- perf: update stark-backend commit (Jonathan Wang)
- feat: Patch ecdsa
VerifyingKey::recover_from_prehashto skip message verification (#1691) (Avaneesh-axiom) - refactor: guest bindings (#1613) (Jonathan Wang)
- refactor: guest bindings (#1613) (Avaneesh-axiom)
- feat: ensure all CLI commit outputs are in hex + fix verify STARK (#1697) (stephenh-axiom-xyz)
- feat: CLI prove use bin name for output path + e2e stark verify (#1675) (stephenh-axiom-xyz)
- feat: init command for cargo openvm (#1670) (stephenh-axiom-xyz)
- feat: commit command for cargo openvm (#1667) (stephenh-axiom-xyz)
- feat: cargo CLI update target directory (#1662) (stephenh-axiom-xyz)
- chore: add entry point to book examples without openvm::init!() (#1663) (stephenh-axiom-xyz)
- docs: add CHANGELOG.md (#1660) (HrikB)
- fix: verifier read dir (#1658) (HrikB)
- refactor: CLI Build & Setup (#1649) (Xinding Wei)
- feat: helper functions for verify_openvm_stark (#1631) (Xinding Wei)
- feat: Macro define_verify_openvm_stark (#1620) (Xinding Wei)
- feat: Root Verifier ASM (#1615) (Xinding Wei)
- feat: Add Rv32HintLoadByKey (#1606) (Xinding Wei)
- feat: Add e2e stark proof support (#1597) (Xinding Wei)
- feat: openvm build can build multiple targets + additional cargo options (#1647) (stephenh-axiom-xyz)
- chore: update
getrandomto v0.3 inopenvmlib (#1635) (Jonathan Wang) - feat: Lazily call setup function for moduli and curves on first use (#1603) (Avaneesh-axiom)
- feat: Build script for calling init macros (#1596) (Avaneesh-axiom)
- refactor: ELF and Program (#1638) (Xinding Wei)
- chore(ci): patch examples to use local crates by @jonathanpwang in #1712
- chore: change to dual license by @yi-sun in #1713
- fix(sw-macro): host
set_up_onceundefined by @jonathanpwang in #1717 - docs: Add comment explaining the
is_identityoptimization by @Avaneesh-axiom in #1716 - fix(cli): generate
openvm_init.rsbefore building by @jonathanpwang in #1721 - chore: macro crate should use workspace version by @jonathanpwang in #1723
- docs: update division typo in ISA.md by @stephenh-axiom-xyz in #1726
- chore(ecc-guest): placeholder trait and function implementations for patch compilation by @jonathanpwang in #1720
- chore: fix typos and links by @jonathanpwang in #1730
- feat: Add feature gating for halo2 imports in SDK and CLI crates by @devin-ai-integration[bot] in #1731
- fix: use seed for deterministic re-execution by @jonathanpwang in #1741
- docs: Add VERSIONING.md documentation by @devin-ai-integration[bot] in #1735
- fix(ecdsa): match upstream behavior to error on overflowing add by @jonathanpwang in #1742
- fix(ecdsa): validate public key is not identity by @jonathanpwang in #1743
- fix(k256): ecdsa verify needs custom hook by @jonathanpwang in #1744
- fix(ecc): checked
from_be_bytesby @jonathanpwang in #1746 - fix:
from_sec1_bytesshould reject identity by @jonathanpwang in #1747 - fix: Elliptic curve point decompression doesn't check if
y = 0by @Avaneesh-axiom in #1768 - fix: verify stark test by @HrikB in #1779
- chore: update
stark-backendtov1.1.1tag by @jonathanpwang in #1784 - docs: Add README.md for verify_stark by @nyunyunyunyu in #1774
- chore: run verify-stark tests in ci by @HrikB in #1788
- feat(toolchain): support
getrandomv0.2 and v0.3 simultaneously by @jonathanpwang in #1795 - ci: add versioning compatibility workflow for INT-4160 by @devin-ai-integration[bot] in #1753
- fix:
getrandompulling instdby @jonathanpwang in #1804 - feat(cli): update version command and add version tag to init by @jonathanpwang in #1820
- docs: guest libs by @HrikB in #1805
- docs(book): add docs on
init!macro by @jonathanpwang in #1837 - docs(book): clarify read-only reflection by @jonathanpwang in #1838
- fix(test): use local
openvmfor testingcargo openvm initby @jonathanpwang in #1842 - fix(test): CLI init test patching not triggered by @jonathanpwang in #1846
- audit: add cantina report for v1.3.0 by @jonathanpwang in #1855
- chore: bump workspace version to
v1.3.0by @jonathanpwang in #1854 - docs: update CHANGELOG with breaking changes since v1.2.0 by @devin-ai-integration[bot] in #1732
- fix(sdk):
aggregate_leaf_proofsshould always generate an internal proof by @jonathanpwang in #1866 - chore: update book for v1.3.0 release by @jonathanpwang in #1865
Full Changelog: v1.2.0...v1.3.0
v1.2.1-rc.0
v1.2.0
Security Fix
This release makes fixes for security advisories:
- Plonky3: GHSA-f69f-5fx9-w9r9
- OpenVM: GHSA-4w7p-8f9q-f4g2 (recursion circuit fixes corresponding to Plonky3)
See the advisories for further details as well as #1703
What's Changed
- docs: solidity sdk by @HrikB in #1628
- chore: update tagged version by @yi-sun in #1636
- fix: change parallel estimate to account for serial execution by @yi-sun in #1686
- docs: Stark Proof Aggregation by @nyunyunyunyu in #1693
- fix(recursion): final_poly & FRI missing randomness by @jonathanpwang in #1703
Full Changelog: v1.1.2...v1.2.0
v1.1.2
The solidity verifier contract generation has been changed so the version stored in the contract is {MAJOR_VERSION}.{MINOR_VERSION}. The patch version will not change the verifier contract (this will be upheld by OpenVM).
What's Changed
- chore: update tag in book install instructions by @jonathanpwang in #1626
- fix: several typos of different importance by @crStiv in #1627
- docs: Update native compiler docs for debug by @nyunyunyunyu in #1634
- feat: truncate patch on verifier version by @HrikB in #1629
New Contributors
Full Changelog: v1.1.1...v1.1.2
v1.1.1
We have added new functionality to the SDK to generate Solidity verifier contracts with better contract interfaces, intended for compatibility with the OpenVM Solidity SDK. The CLI commands related to evm have updated output formats documented in the book.
Notes
The pre-release tag v1.0.1-rc.1 (0f94c8a) was rebased on top of the security fix patched in v1.1.0. The new commit after the rebase was b4a5652 (tag v1.1.1-rc.1).
One can check via
git diff b4a565219ad808ee11cdd5f1be4a8516bb7df1ac 0f94c8a3dfa7536c1231465d1bdee5fc607a5993that the only difference in the two commits is the fix from v1.0.0...v1.1.0.
What's Changed
- feat(cli): install pinned nightly toolchain automatically by @jonathanpwang in #1541
- chore: fix book lints by @yi-sun in #1543
- book: update install instructions with tag by @jonathanpwang in #1545
- docs: add link to whitepaper by @jonathanpwang in #1546
- fix: don't segment due to fixed-size traces by @zlangley in #1548
- chore: fix broken links by @bodhi-crypo in #1547
- fix(ci): run openvm-cli tests by @shuklaayush in #1552
- fix: Update Mod Builder symbolic expression multiplication test by @Avaneesh-axiom in #1551
- fix: use absolute paths in
VmConfigderive macro by @shuklaayush in #1550 - feat: make provers generic over engine by @Golovanov399 in #1553
- fix: RootVerifierLocalProver should respect AIR heights by @nyunyunyunyu in #1554
- feat(test): add execution benchmarks by @shuklaayush in #1556
- feat:
OpenVmHalo2Verifierby @HrikB in #1549 - chore: cargo openvm build also outputs committed exe by @luffykai in #1560
- chore(ci): enforce conventional commits PR title by @jonathanpwang in #1564
- chore(deps): bump tokio from 1.43.0 to 1.43.1 by @dependabot in #1562
- chore(deps): bump crossbeam-channel from 0.5.14 to 0.5.15 by @dependabot in #1569
- fix(docs): typo in access adapter split/merge algorithm by @shuklaayush in #1566
- feat(sdk)!: configurable aggregation tree shape in SDK by @jonathanpwang in #1570
- perf: set default
num_children_internal=3by @jonathanpwang in #1573 - chore(fmt): wrap comments and format code comments by @jonathanpwang in #1575
- chore: feature gate
revmandalloyimports by @jonathanpwang in #1572 - fix: circuit flamegraphs with segmentation by @Avaneesh-axiom in #1576
- chore: silence clippy by @zlangley in #1580
- chore: alter json format of proof to align with verifier contract by @HrikB in #1578
- chore: bump workspace version to 1.0.1-rc.0 by @HrikB in #1581
- feat: format verifier by @HrikB in #1583
- docs: update the verifier contract paths in book by @HrikB in #1587
- chore: improvements to book on interface by @yi-sun in #1593
- chore(ci): invert reverse flamegraph for icicles by @manh9203 in #1594
- ci: bump actions/checkout to v4 by @dizer-ti in #1595
- fix: Micro benchmark flamegraph by @manh9203 in #1598
- chore: add offline mode to cli build by @luffykai in #1605
- chore: feature gate
forge-fmtby @jonathanpwang in #1608 - chore: allow cargo home env var in build by @luffykai in #1609
- feat(cli): allow
RUSTFLAGSin build command by @jonathanpwang in #1610 - docs(book): improve overview on CLI inputs by @jonathanpwang in #1612
- fix(prof):
openvm-profhandling of duplicate names by @jonathanpwang in #1617 - chore(deps): bump crossbeam-channel from 0.5.14 to 0.5.15 by @dependabot in #1621
- chore: bump
stark-backendtov1.0.1by @jonathanpwang in #1622 - release: v1.1.1 by @jonathanpwang in #1624
- audit: add Cantina security review for v1.1.1 by @jonathanpwang in #1625
New Contributors
- @bodhi-crypo made their first contribution in #1547
- @dependabot made their first contribution in #1562
Full Changelog: v1.1.0...v1.1.1
v1.1.0
Security advisory -- we found a bug in the AUIPC chip constraints in OpenVM v1.0.0:
github.com/openvm-org/openvm/security/advisories/GHSA-jf2r-x3j4-23m7
The bug has been fixed in the new OpenVM v1.1.0 release, and all known live deployments have been updated.
All users are recommended to update to OpenVM v1.1.0 immediately.
Full Changelog: v1.0.0...v1.1.0
v1.0.1-rc.1
v1.0.1-rc.0
What's Changed
- feat(cli): install pinned nightly toolchain automatically by @jonathanpwang in #1541
- chore: fix book lints by @yi-sun in #1543
- book: update install instructions with tag by @jonathanpwang in #1545
- docs: add link to whitepaper by @jonathanpwang in #1546
- fix: don't segment due to fixed-size traces by @zlangley in #1548
- chore: fix broken links by @bodhi-crypo in #1547
- fix(ci): run openvm-cli tests by @shuklaayush in #1552
- fix: Update Mod Builder symbolic expression multiplication test by @Avaneesh-axiom in #1551
- fix: use absolute paths in
VmConfigderive macro by @shuklaayush in #1550 - feat: make provers generic over engine by @Golovanov399 in #1553
- fix: RootVerifierLocalProver should respect AIR heights by @nyunyunyunyu in #1554
- feat(test): add execution benchmarks by @shuklaayush in #1556
- feat:
OpenVmHalo2Verifierby @HrikB in #1549 - chore: cargo openvm build also outputs committed exe by @luffykai in #1560
- chore(ci): enforce conventional commits PR title by @jonathanpwang in #1564
- chore(deps): bump tokio from 1.43.0 to 1.43.1 by @dependabot in #1562
- chore(deps): bump crossbeam-channel from 0.5.14 to 0.5.15 by @dependabot in #1569
- fix(docs): typo in access adapter split/merge algorithm by @shuklaayush in #1566
- feat(sdk)!: configurable aggregation tree shape in SDK by @jonathanpwang in #1570
- perf: set default
num_children_internal=3by @jonathanpwang in #1573 - chore(fmt): wrap comments and format code comments by @jonathanpwang in #1575
- chore: feature gate
revmandalloyimports by @jonathanpwang in #1572 - fix: circuit flamegraphs with segmentation by @Avaneesh-axiom in #1576
- chore: silence clippy by @zlangley in #1580
- chore: alter json format of proof to align with verifier contract by @HrikB in #1578
- chore: bump workspace version to 1.0.1-rc.0 by @HrikB in #1581
New Contributors
- @bodhi-crypo made their first contribution in #1547
- @dependabot made their first contribution in #1562
Full Changelog: v1.0.0...v1.0.1-rc.0