v0.12.0
Pre-release
Pre-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
: enablefetch_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
fromWorkerState
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
tolinera-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 forSocketAddr
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 parseSocketAddr
by @jvff in #2109 Cargo.lock
: update patched version ofwasmer
by @Twey in #2107linera-core
: simplify notification handling by @Twey in #2100- Run single validator with Docker Compose by @christos-h in #2102
wasmer
: use Linera forklinera-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
fromlocal_node
by @Twey in #2121linera-core
: renameChainClientBuilder
toClient
by @Twey in #2122linera-service
: move wallet-only operations out ofClientContext
by @Twey in #2120linera-service
: giveClientContext
access to storage by @Twey in #2125- Refactor BlockProposal. by @afck in #2126
- Spawn tasks in
JoinSet
s 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 theChainWorkerState
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
andWIT 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
andWIT 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
tolinera 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
astruct
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
ChainWorkerActor
s 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
intolinera-client
by @Twey in #2082 linera-client
: add topackages.txt
by @Twey in #2225- Set the
self.hash
toNone
in thehashable_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 overPersist<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
andget_mut_or_default
forByteMapView
by @MathieuDutSik in #2238 - Implement
pre_load
/post_load
for 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 theReentrantCollectionView
. 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 theKeyValueStore
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
inMapView
andKeyValueStoreView
. by @MathieuDutSik in #2296 - Implement
try_load_all_entries
forReentrantCollectionView
. 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 therun_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
returningtrue
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 overawait
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
andLruCachingStore
. 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 intransfer
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
andReentrantCollectionView
. 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
fromlinera-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
: addtask
to abstract over spawning by @Twey in #2392- Change of the
KeyValueStore
trait. 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 testinglinera-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 theAdminKeyValueStore
and simplifylinera_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
inRocksDb
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