Skip to content

v0.12.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@ma2bd ma2bd released this 06 Sep 03:34
· 309 commits to main since this release

Linera: v0.12.0 update

We're very excited to publish Linera v0.12.0! πŸš€

We've been working hard to improve the Linera protocol as part of our mission to enable the fastest and most scalable Web3 applications.

Summary

This release features another set of SDK improvements, making it easier to write applications for Linera.

For a more in-depth breakdown see the 'What's Changed' section.

What's Changed

  • Forgotten correction. by @MathieuDutSik in #2001
  • fix linera-witty for cargo publish by @ma2bd in #2004
  • blob -> hashed_certificate_value by @andresilva91 in #2003
  • Pin async-graphql version by @jvff in #2012
  • Switch to alloy for Ethereum support by @MathieuDutSik in #2006
  • Fix docker image eth by @christos-h in #2009
  • Workspace metadata by @Twey in #2015
  • flake.nix: use a Nix package to facilitate sharing by @Twey in #2016
  • Account -> FungibleAccount on UI by @andresilva91 in #2020
  • fix async-graphql-derive for linera-version as well by @ma2bd in #2021
  • Remove debug logs by @andresilva91 in #2022
  • Use workspace metadata in linera-ethereum as well by @ma2bd in #2023
  • linera-execution: enable fetch_url on Wasm environments by @Twey in #1988
  • Make linera-ethereum compile under WASM by @MathieuDutSik in #2019
  • Do not run docker workflow on examples and scripts directories by @christos-h in #2034
  • Add hex-game example. by @afck in #2039
  • Small optimization in check_no_missing_bytecode by @andresilva91 in #2038
  • Adding error rate/latency metrics to dashboard by @andresilva91 in #2047
  • FIX: Download certificates in batches, rather than all at once. by @ma2bd in #2046
  • Make the ethereum-tracker example application work by @MathieuDutSik in #2036
  • Create a CertificateValueCache by @jvff in #2010
  • PublishBlob by @andresilva91 in #2014
  • Promote reinserted values in cache by @jvff in #2049
  • Docker CI workflow is more strict by @christos-h in #2041
  • Disable 3 tests that frequently fail. by @MathieuDutSik in #2050
  • Generalize CertificateValueCache by @andresilva91 in #2054
  • Disabling Ethereum tests by @MathieuDutSik in #2058
  • Address two synchronization errors. by @MathieuDutSik in #2056
  • Reintroduce Ethereum in the CI by @MathieuDutSik in #2061
  • Fix linera-sdk docs.rs build by @jvff in #2064
  • Update the crates of the main workspace to v0.12.0 with workspace config by @ma2bd in #2063
  • Add PublishBlob UnitTest by @andresilva91 in #2062
  • Ethereum sync by @MathieuDutSik in #2052
  • Readme tests ignore bash blocks ending with ignore by @christos-h in #2069
  • GRPC entrypoint to download a blob by @andresilva91 in #2044
  • Generative NFTs by @christos-h in #2005
  • Allow making an app's operations mandatory in each block. by @afck in #2067
  • Add the block to the non_executive_call. by @MathieuDutSik in #2075
  • Extend open chain functions in CLI, node service and system API. by @afck in #2076
  • Split off ChainWorkerState from WorkerState by @jvff in #2055
  • Test publish by @ma2bd in #2065
  • Refactor usage of SocketAddr by @jvff in #2088
  • Listen for signals in the main task by @jvff in #2086
  • Switch from alloy to linera-alloy. by @MathieuDutSik in #2092
  • Update Cargo.lock by @jvff in #2094
  • Clean-up simple server shutdown by @jvff in #2087
  • Test publish ci by @ma2bd in #2080
  • Parse only IpAddr instead of parsing a new string for SocketAddr by @jvff in #2093
  • Replace blob chain info query usage with blob download by @afck in #2098
  • Refactor server spawning to be synchronous and infallible by @jvff in #2097
  • Wasm on the Web by @Twey in #1990
  • Use notification subscriptions in the pub-sub end-to-end test. by @afck in #2104
  • Update examples Cargo.lock. by @afck in #2105
  • Avoid allocating a String to parse SocketAddr by @jvff in #2109
  • Cargo.lock: update patched version of wasmer by @Twey in #2107
  • linera-core: simplify notification handling by @Twey in #2100
  • Run single validator with Docker Compose by @christos-h in #2102
  • wasmer: use Linera fork linera-wasmer for the time being by @Twey in #2110
  • Implement graceful shutdown of server and proxy by @jvff in #2108
  • Add an assert_before oracle. by @afck in #2078
  • Eliminate the spawning of the storage service in the cargo test by @MathieuDutSik in #2106
  • Fix re-proposing another owner's proposal from an earlier round. by @afck in #2118
  • Remove the Optionality to the get_balance. by @MathieuDutSik in #2117
  • Improve the accuracy of the output by @MathieuDutSik in #2119
  • Add metrics to the storage_service by @MathieuDutSik in #2114
  • Fix the flaky test_re_propose_validated. by @afck in #2123
  • linera-core: remove unnecessary &mut from local_node by @Twey in #2121
  • linera-core: rename ChainClientBuilder to Client by @Twey in #2122
  • linera-service: move wallet-only operations out of ClientContext by @Twey in #2120
  • linera-service: give ClientContext access to storage by @Twey in #2125
  • Refactor BlockProposal. by @afck in #2126
  • Spawn tasks in JoinSets by @jvff in #2116
  • Enable Kubernetes CI to work in parallel by @MathieuDutSik in #2101
  • Group outgoing messages by transaction. by @afck in #2060
  • Allow client node to read ChainStateView outside the ChainWorkerState by @jvff in #2124
  • Revert "Enable Kubernetes CI to work in parallel (#2101)" by @ma2bd in #2138
  • Test clippy lint for large futures by @ma2bd in #2137
  • Global local client by @Twey in #2128
  • Use the message policy specified on the CLI. by @afck in #2141
  • Upgrade to Rust 1.79.0 by @afck in #2132
  • Create ChainWorkerActor by @jvff in #2135
  • Docker compose works for MacOS by @christos-h in #2143
  • Fix ensure_grpc_server_has_started by @ma2bd in #2145
  • Create new chains from admin chain for integration tests by @jvff in #2134
  • Endpoint to download a certificate value by @andresilva91 in #2074
  • Correct the paths for the computation of the RPC API hash and WIT API hash by @MathieuDutSik in #2142
  • Disable the cache for the objects used in the NodeService and Faucet by @MathieuDutSik in #2146
  • Replace certificate chain info query usage with certificate download by @andresilva91 in #2081
  • Certificate -> HandleCertificateRequest on rpc.proto by @andresilva91 in #2084
  • Endpoint to download a Certificate by @andresilva91 in #2090
  • Replace request_sent_certificates_in_range with endpoint to download certificates by @andresilva91 in #2091
  • Remove retry loop from make_application. by @afck in #2144
  • Disable the assert statements for the RPC API hash and WIT API hash. by @MathieuDutSik in #2148
  • Don't retry proposal if the block got confirmed, even with different oracle values. by @afck in #2155
  • Print logs during e2e tests by @ma2bd in #2157
  • Introduction of the get_node_port. by @MathieuDutSik in #2153
  • Remove redundant local chain info query from propose_block. by @afck in #2161
  • Track the certified block that published a blob last by @andresilva91 in #2156
  • Endpoint to request which certificate published a blob last in a given validator by @andresilva91 in #2158
  • Do not merge message bundles from different transactions by @ma2bd in #2164
  • Add blobs as oracle records by @andresilva91 in #2162
  • linera-explorer: fix build by @Twey in #2168
  • Merge 3 errors cases for Blobs and ApplicationBytecodes not being found into one by @andresilva91 in #2169
  • linera-core: handle notifications exactly once by @Twey in #2170
  • Fix client block proposal race condition by @jvff in #2178
  • flake.lock: update for Rust 1.79 by @Twey in #2184
  • Fix unrelated error in test due to a chain with zero balance by @jvff in #2179
  • Fix handling of chain state changes in ChainWorkerState by @jvff in #2180
  • Implement multiple connection points for the storage_service by @MathieuDutSik in #2181
  • Add option --policy-config to linera net up by @ma2bd in #2182
  • Revert PR #2181 by @ma2bd in #2191
  • Fix further incorrect leftover changes to ChainStateView by @jvff in #2189
  • Disable all graphql caches by @MathieuDutSik in #2185
  • Fix rollback making cached hash value incorrect by @jvff in #2197
  • Keep ChainWorkerActor running in an LRU cache by @jvff in #2163
  • nits in state.rs by @ma2bd in #2198
  • Make SyncRuntime represent the execution lifetime by @jvff in #2192
  • Make ExecutionRuntimeConfig a struct by @jvff in #2200
  • Revert "Make SyncRuntime represent the execution lifetime (#2192)" by @jvff in #2205
  • Rename instances of linera-test to linera by @christos-h in #2203
  • Make SyncRuntime represent the execution lifetime (second attempt) by @jvff in #2207
  • Implement multi key reading in one single requests in ScyllaDb. by @MathieuDutSik in #2196
  • Add print statements for the storage_service_server by @MathieuDutSik in #2159
  • Run service runtime as an actor spawned by the chain worker by @jvff in #2209
  • Generalize client storage from the filesystem by @Twey in #2194
  • Implement the crypto_hash_mut function by @MathieuDutSik in #2201
  • Fix conflicting ChainWorkerActors when running benchmarks by @jvff in #2210
  • linera-core: shared client state by @Twey in #2133
  • CI improvements by @ma2bd in #2215
  • Split read_multi_values_bytes queries for ScyllaDb in chunks of 100 by @MathieuDutSik in #2214
  • Give validators weight 100 by default. by @afck in #2206
  • Rename storage errors by @ma2bd in #2218
  • Extend the hex-game README with detailed usage instructions; sync from validators in chain listener. by @afck in #2219
  • linera-client: fix block height race by @Twey in #2221
  • Improve logging in README tests by @jvff in #2222
  • Minor fixes: typos, simplifications. by @afck in #2223
  • Split client functionality from linera-service into linera-client by @Twey in #2082
  • linera-client: add to packages.txt by @Twey in #2225
  • Set the self.hash to None in the hashable_wrapper by @MathieuDutSik in #2208
  • Improve ChainWorkerActor logging by @jvff in #2226
  • Fix the README.md file of the NFT example app by @MathieuDutSik in #2227
  • Add another entry to CommunicationError. by @MathieuDutSik in #2217
  • read_blob system API by @andresilva91 in #2193
  • linera-client: generalize over Persist<Target = Wallet> implementation by @Twey in #2224
  • Remove the OracleRecord and OracleResponses types; never throw away responses. by @afck in #2232
  • Implement the has_pending_changes feature for the views by @MathieuDutSik in #2202
  • Update lint nightly to 2024-07-11 by @Twey in #2235
  • Fix lints + disable non-compiling test module by @Twey in #2240
  • Correct the get_mut and get_mut_or_default for ByteMapView by @MathieuDutSik in #2238
  • Implement pre_load/ post_loadfor the views. by @MathieuDutSik in #2213
  • fix CI by @ma2bd in #2243
  • Make application services keep running across queries by @jvff in #2216
  • Unfreeze time in long-lived service tests by @jvff in #2246
  • Contracts can emit events, record them in blocks. by @afck in #2241
  • Cache the LLM model inside the service by @jvff in #2258
  • Check the hash of the model and tokenizer bytes by @jvff in #2263
  • fix Wasm test commands in CONTRIBUTING.md by @ma2bd in #2262
  • Tracing infrastructure by @Twey in #2257
  • Disable kubernetes CI workflow by @Twey in #2272
  • Improve logs in LLM example by @jvff in #2269
  • Implement a new for views. by @MathieuDutSik in #2242
  • Fix contention for WorkerState in SDK integration test framework by @jvff in #2277
  • Remove the try_load_entry_or_insert from the ReentrantCollectionView. by @MathieuDutSik in #2276
  • Add test helpers for native token transfers by @jvff in #2278
  • Correct the ordering of the process_inbox operations for the NFT test by @MathieuDutSik in #2281
  • Mint all native tokens when creating admin chain by @jvff in #2280
  • reactivate test_wasm_end_to_end_non_fungible_service_grpc by @ma2bd in #2283
  • Add option to skip "process_inbox" in the node service by @ma2bd in #2284
  • rename storage_service_server into linera-storage-server by @ma2bd in #2282
  • Fix reconfiguration end-to-end test. by @afck in #2285
  • Changes to try_load_entries(_mut) by @MathieuDutSik in #2279
  • Introduce the function contains_keys for the KeyValueStore trait. by @MathieuDutSik in #2244
  • Benchmark cross-chain transfers without IO in CI by @jvff in #2287
  • linera-core: remove double-locking behaviour by @Twey in #2290
  • Implement the use of contains_keys and other corrections. by @MathieuDutSik in #2293
  • Add query-validator command, and make set-validator check version. by @afck in #2289
  • Rename the BaseKey variants in storage. by @afck in #2299
  • Refactor the deleted_prefixes in MapView and KeyValueStoreView. by @MathieuDutSik in #2296
  • Implement try_load_all_entries for ReentrantCollectionView. by @MathieuDutSik in #2294
  • Improve logging output by @Twey in #2295
  • Check cargo-rdme for all examples where it applies. Fix gen-nft README. by @afck in #2310
  • Fixed typo on MessageKind by @christos-h in #2307
  • Add an option skip_process_inbox to the run_node_service by @MathieuDutSik in #2298
  • fix comment by @ma2bd in #2311
  • Benchmark ReentrantCollectionView::try_load_all_entries by @jvff in #2297
  • Update lagging validators on blob reads by @andresilva91 in #2220
  • CI: lock dependencies in cargo install by @ma2bd in #2312
  • flake.lock: update to enable Rust 1.80 by @Twey in #2318
  • Upgrade to Rust 1.80.0, remove linera_base::sync. by @afck in #2317
  • Minor cleanups in the ChainClient implementation. by @afck in #2320
  • Don't handle redundant notifications. by @afck in #2322
  • Make sure certificate last used by a blob is valid by @andresilva91 in #2321
  • Fix ReentrantCollectionView::has_pending returning true if it has cached but unchanged entries by @jvff in #2274
  • Remove 3 process_inbox that are not needed. by @MathieuDutSik in #2323
  • Assert that there are no pending changes before chain worker operations by @jvff in #2273
  • Fix subscription race condition in social pub-sub test by @jvff in #2324
  • Use chunks_exact when post-loading multiple entries by @jvff in #2325
  • Add open_chain to runtime. by @afck in #2327
  • Remove chain guards by @jvff in #2330
  • Tweak the README of the Gen-NFT example by @jvff in #2332
  • Tweak chain race warning by @jvff in #2333
  • linera_base::tracing: don't try to guess when the caller wants JSON by @Twey in #2313
  • Add the multi_get to the MapView type. by @MathieuDutSik in #2319
  • Workaround cargo-local-registry installation issue in CI by @jvff in #2337
  • linera_core::worker: don't hold mutexes over await points by @Twey in #2314
  • Make HashedBlob's fields private by @andresilva91 in #2329
  • web-frontend for social-app with GraphQL types by @Nirajsah in #2275
  • Make BlobId into enum by @andresilva91 in #2231
  • Blob->BlobContent HashedBlob->Blob by @andresilva91 in #2345
  • Remove python HTTP server from LLM example README by @jvff in #2346
  • Replace async locks by sync locks in HashableWrapper and LruCachingStore. by @MathieuDutSik in #2339
  • Several memory store refactorings. by @MathieuDutSik in #2342
  • linera-version: use a committed cache of the API hashes by @Twey in #2347
  • Make the memory stores persistent within a run. by @MathieuDutSik in #2316
  • Fix schema_export: create namespace before using it. by @afck in #2350
  • Some leftover renames after BlobContent by @andresilva91 in #2349
  • Rename IncomingMessage to IncomingBundle. by @afck in #2353
  • Add blobs to NFT example by @andresilva91 in #2354
  • Don't use individual message IDs in linera-sdk testing. by @afck in #2352
  • Feature-flag native client features by @Twey in #2233
  • Align NFT UI with using blobs by @andresilva91 in #2355
  • Add TODO comments for two bugs. by @afck in #2363
  • feat: use "serde_json" for "BlobType" string conversion by @duguorong009 in #2364
  • Check if blob exists before minting NFT by @andresilva91 in #2356
  • Update the Cargo.lock by @duguorong009 in #2367
  • Support user_data option in transfer cli by @duguorong009 in #2369
  • Correct an issue for the memory-storage-service. by @MathieuDutSik in #2365
  • Replace async locks by sync locks for KeyValueStoreView and ReentrantCollectionView. by @MathieuDutSik in #2366
  • Ensure only data blobs are present in SDK/System API calls by @andresilva91 in #2368
  • Execute messages from the same transaction to the same destination atomically. by @afck in #2343
  • open_chain returns the message ID. by @afck in #2376
  • Insert RegisterApplications before the first user outcome. by @afck in #2377
  • Remove anyhow from linera-client by @Twey in #2374
  • ChainStateView::execute_block can now activate a chain. by @afck in #2379
  • Add open_chain to the test runtime. by @afck in #2378
  • Implement the root_key for the stores. by @MathieuDutSik in #2348
  • Compress Wasm bytecodes when publishing by @jvff in #2382
  • feat: split-off MockApplication::assert_no_more_expected_calls into two by @duguorong009 in #2381
  • Introduce micro-benchmarks for the stores. by @MathieuDutSik in #2334
  • Fix schema_export by @afck in #2387
  • Make hex-game create temporary chains for each game. by @afck in #2384
  • Feature-gate the http_post and query_service oracles. by @afck in #2396
  • Add a fee budget to temporary Hex game chains. by @afck in #2397
  • linera-base: add task to abstract over spawning by @Twey in #2392
  • Change of the KeyValueStoretrait. by @MathieuDutSik in #2386
  • Filter messages from unsubscribed channels. by @afck in #2403
  • Make cargo test work with and without the unstable-oracles feature. by @afck in #2404
  • Remove notify message by @afck in #2402
  • Message Policy accepts messages from specific chains. by @christos-h in #2303
  • Minor fixes: documentation, imports by @afck in #2409
  • Expand env variables inside gql in READMEs by @andresilva91 in #2400
  • Replace Bytecode with Blobs by @andresilva91 in #2375
  • Make the temporary directory of the RocksDb instances part of the store and the configuration. by @MathieuDutSik in #2405
  • Handle Subscribe and Unsubscribe offchain. by @afck in #2407
  • Format code in doc comments by @ma2bd in #2415
  • Limit network actions to tracked chains (in main) by @jvff in #2393
  • chore: add test for MockKeyValueStore by @duguorong009 in #2385
  • Improve log messages. by @afck in #2417
  • Enable test feature when testing linera-sdk by @jvff in #2418
  • Move UserApplication[Description|Id] to linera-base by @andresilva91 in #2416
  • Added a 'one-click' deploy-validator.sh script by @christos-h in #2419
  • linera-explorer: fix build by @Twey in #2422
  • Change CLI command to publish-data-blob by @andresilva91 in #2424
  • Use ruzstd to decompress bytecodes in Wasm by @jvff in #2421
  • linera-indexer-example: make sure we have all the right features enabled for testing by @Twey in #2423
  • Add a get_test_config to the AdminKeyValueStore and simplify linera_storage. by @MathieuDutSik in #2414
  • Update wasmtime to version 24.0.0 by @jvff in #2427
  • Create get-application-creator-chain-id system-api call by @andresilva91 in #2425
  • Fix Witty export of functions with 16 parameters by @jvff in #2429
  • remove DbStorageInner by @ma2bd in #2433
  • Remove all ViewError bounds by @ma2bd in #2431
  • Recursively handle network actions triggered by subscriptions. by @afck in #2428
  • Revert "Fix Witty export of functions with 16 parameters" by @jvff in #2435
  • CI: run Clippy on web-default features for Web-compatible crates by @Twey in #2434
  • Improve file structure in linera-views by @ma2bd in #2436
  • Update service schema, remove feature gates from test. by @afck in #2439
  • More simplifications around view context objects by @ma2bd in #2438
  • Remove the handling of root_key in RocksDb via separate instances. by @MathieuDutSik in #2441
  • Fix stability of GraphQL schemas by @ma2bd in #2442
  • Use different chain worker cache sizes depending on the context by @jvff in #2444
  • examples/social/web-frontend: exclude node service queries from GraphQL codegen by @Twey in #2443
  • Fix race condition after evicting an active chain worker by @jvff in #2445
  • Split the end-to-end test file. by @MathieuDutSik in #2440
  • Make service runtime short-lived by @ma2bd in #2453

New Contributors

Full Changelog: v0.11.3...v0.12.0