Rust SDK for writing contracts for Stellar Jump Cannon

Overview

rs-stellar-contract-sdk

Rust SDK for writing contracts for Stellar Jump Cannon.

This repository contains code that is in early development, incomplete, not tested, and not recommended for use. The API is unstable, experimental, and is receiving breaking changes frequently.

Run a contract on the Stellar-Core Jump Cannon prototype

The Stellar-Core Jump Cannon prototype and this SDK are not 100% compatible. Both are still in development and some features may be present in one and not the other. This may cause some example contracts to fail to run on the prototype. However, all examples and tests in this repo should function on the mock host implementation built into the SDK, which is what all tests within the SDK use.

Prerequisites

  1. Install binaryen - https://github.com/WebAssembly/binaryen#building
  2. Install wabt - https://github.com/WebAssembly/wabt#cloning
    • This is optional. It contains wasm-objdump, which you can use to dump the contents of a contract. Ex. wasm-objdump -xh ~/stellar/rs-stellar-contract-sdk/target/wasm32-unknown-unknown/release/example_add.wasm
  3. Make sure binaries from the first two steps are available in your PATH.
  4. Install Rust - https://www.rust-lang.org/learn/get-started
  5. Checkout and build stellar-core wasm-prototype - https://github.com/graydon/stellar-core/tree/wasm-prototype
  6. Build - https://github.com/stellar/rs-stellar-contract-sdk
    • rustup target add wasm32-unknown-unknown
    • make all

Contract call

Pass one of the built wasm files from rs-stellar-contract-sdk into the stellar-core wasm-prototype Ex. stellar-core --conf stellar.conf invoke-contract rs-stellar-contract-sdk/target/wasm32-unknown-unknown/release/example_add.wasm add --arg u63:5 --arg u63:11

Comments
  • User defined error types

    User defined error types

    It should be possible for contracts to create their own status error codes that are clearly separated from all errors that the host could create. For this we need a new ScStatusType, something like ContractError should do. The codes within that type of error would be undefined by the XDR and any u32 value could be used. It would be up to contracts to define what they are.

    opened by leighmcculloch 27
  • Contract Spec

    Contract Spec

    This description is updated with the resolution:

    The design is here: https://github.com/stellar/rs-stellar-contract-sdk/issues/42#issuecomment-1143937788

    The list of things to do now are here (https://github.com/stellar/rs-stellar-contract-sdk/issues/42#issuecomment-1146455941):

    • [x] stellar/rs-stellar-contract-sdk#114
    • [x] stellar/rs-stellar-contract-sdk#115
    • [x] stellar/rs-stellar-contract-sdk#116
    • [x] https://github.com/stellar/rs-stellar-contract-sdk/issues/24
    • [x] stellar/rs-stellar-contract-sdk#117
    • [ ] https://github.com/stellar/rs-stellar-contract-sdk/issues/153
    • [ ] https://github.com/stellar/rs-stellar-contract-sdk/issues/168
    • [x] stellar/rs-stellar-contract-sdk#118
    • [x] stellar/stellar-contract-cli#6
    • [ ] stellar/stellar-contract-cli#7
    • [ ] stellar/stellar-contract-cli#8
    • [x] https://github.com/stellar/rs-stellar-contract-sdk/issues/142
    opened by leighmcculloch 13
  • Fix Design of Account

    Fix Design of Account

    What problem does your feature solve?

    The design feels strange. Specifically:

    • from_public_key uses low_threshold to check if the account exists immediately. It should be possible to avoid this check (it isn't free). Notably, it means that you shouldn't construct an Account in a place where you aren't sure you are about to use it because it will impact the footprint for no reason.
    • from_public_key constructs from FixedBinary instead of Binary. It should work on Binary because the guest shouldn't be forced to do a length check that can be done in the host. Binary -> FixedBinary is basically free, the opposite requires at least one host function call.

    What would you like to see?

    Fixes to the above.

    What alternatives are there?

    None

    opened by jonjove 12
  • Convert unit enums to single element vector

    Convert unit enums to single element vector

    What

    Convert unit enums to single element vectors and ignore extra fields when decoding.

    Why

    For a number of reasons:

    • Encode unit enums into their most efficient form.
    • To make it easier to scale enum encoding to support tuple variants with more than a single value.
    • To make it easier to make changes to enums by adding tuple values.

    Close https://github.com/stellar/rs-soroban-sdk/issues/427

    Known limitations

    N/A

    opened by leighmcculloch 11
  • Exported Contract Functions can Collide when Using Other Crates

    Exported Contract Functions can Collide when Using Other Crates

    In working on an example liquidity pool contract, I am currently depending on the token contract as a normal Cargo dependency

    [dependencies]
    # ...
    stellar-token-contract = { path = "../rs-stellar-token-contract" }
    

    Both contracts contain a contractimpl function initialize. When building native tests on Mac, these functions seem to suffer a collision at runtime. In other words, calling liqpool::initialize inadvertently calls token::initialize instead. Changing liqpool::initialize to liqpool::init resolves this issue.

    Ideally, these should either (a) not collide at all or (b) it should be possible to change/disable the exported names when using a dependency.

    bug 
    opened by jonjove 11
  • Check on contract_data set method to avoid overflow on contract data set

    Check on contract_data set method to avoid overflow on contract data set

    What problem does your feature solve?

    Assuming we have an enum with data names to be added to a contract's data as a u32 primitive, like in the following implementation:

    #[derive(Clone, Copy)]
    #[repr(u32)]
    pub enum DataName {
        Admin = 0,
        AllowedToken = 1,
        Nonce = 2
    }
    

    When implementing IntoVal for that enum, the into_val method is called on the enum. The ideal implementation (as showed in the examples) would be the following:

    impl IntoVal<Env, RawVal> for DataName {
        fn into_val(self, env: &Env) -> RawVal {
            (self as u32).into_val(env)
        }
    }
    

    However, it might happen to forget adding as u32 (at least, it happened to me :) ). This might result in setting contract data with an enum that will overflow the stack: tommasodeponti_—tmux—tmux—tmux—_204×56

    What would you like to see?

    As you can see from the screenshot, the error message is not really descriptive since it's not a panic. I think there should be a check before passing overflowed values in the contract data, and if it happens, catch the overflow and return a panic describing the error.

    What alternatives are there?

    Maybe the into_val method can directly perform the overflow check?

    opened by heytdep 10
  • Register External Contract for Unit Testing

    Register External Contract for Unit Testing

    What version are you using?

    Commit b4cc8fc

    What did you do?

    Import an external contract and register it using the following function:

    soroban_sdk::env::Env
    pub fn register_contract<T>(&self, contract_id: &BytesN<32>, contract: T)
    

    in an "integration" test format (within the tests folder). The function will not compile with the following error:

    the trait `ContractFunctionSet` is not implemented for `ExampleContract`
    

    The test works as expected in the "unit" test format.

    Minimum example repository here: https://github.com/mootz12/soroban-external-contract-test

    What did you expect to see?

    Imported external contracts can be registered against the env without having to rely on test structs (as seen with consumption of the token contract https://github.com/stellar/soroban-token-contract/blob/main/src/testutils.rs)

    What did you see instead?

    Testing can still be completed using the "unit" test approach or with a test struct.

    bug 
    opened by mootz12 7
  • bigint! macro for conveniently creating bigints from u256 style strings

    bigint! macro for conveniently creating bigints from u256 style strings

    What problem does your feature solve?

    Operations involving large integers are pretty frequent in cryptography, it might be good to add u256 support for parsing large numbers into BigInt.

    What would you like to see?

    Possibly a BigInt::from_u256() method, or a BigInt::parse.

    opened by heytdep 7
  • Self invocations in tests use contractclient

    Self invocations in tests use contractclient

    What

    Mark the <fn>::invoke functions as deprecated, and add as replacement with the developer calling their own contract using a generated client, the same client they'll use when calling other contracts.

    Example

    Before
    const ADD_CONTRACT_ID: [u8; 32] = [0; 32];
    mod addcontract {
        soroban_sdk::contractimport!(
            file = "target/wasm32-unknown-unknown/release/example_add_i32.wasm"
        );
    }
    
    pub struct Contract;
    
    #[contractimpl]
    impl Contract {
        pub fn add_with(env: Env, x: i32, y: i32) -> i32 {
            addcontract::ContractClient::add(&env, &BytesN::from_array(&env, &ADD_CONTRACT_ID), x, y)
        }
    }
    
    #[test]
    fn test_functional() {
        let e = Env::default();
    
        let add_contract_id = BytesN::from_array(&e, &ADD_CONTRACT_ID);
        e.register_contract_wasm(&add_contract_id, addcontract::WASM);
    
        let contract_id = BytesN::from_array(&e, &[1; 32]);
        e.register_contract(&contract_id, Contract);
    
        let x = 10i32;
        let y = 12i32;
        let z = add_with::invoke(&e, &contract_id, &x, &y);
        assert!(z == 22);
    }
    
    After
    const ADD_CONTRACT_ID: [u8; 32] = [0; 32];
    mod addcontract {
        soroban_sdk::contractimport!(
            file = "target/wasm32-unknown-unknown/release/example_add_i32.wasm"
        );
    }
    
    pub struct Contract;
    
    #[contractimpl]
    impl Contract {
        pub fn add_with(env: Env, x: i32, y: i32) -> i32 {
            addcontract::ContractClient::add(&env, &BytesN::from_array(&env, &ADD_CONTRACT_ID), x, y)
        }
    }
    
    #[test]
    fn test_functional() {
        let e = Env::default();
    
        let add_contract_id = BytesN::from_array(&e, &ADD_CONTRACT_ID);
        e.register_contract_wasm(&add_contract_id, addcontract::WASM);
    
        let contract_id = BytesN::from_array(&e, &[1; 32]);
        e.register_contract(&contract_id, Contract);
    
        let x = 10i32;
        let y = 12i32;
        let z = ContractClient::add_with(&e, &contract_id, x, y);
        assert!(z == 22);
    }
    
    Diff
    @@ -31,7 +32,7 @@ fn test_functional() {
     
         let x = 10i32;
         let y = 12i32;
    -    let z = add_with::invoke(&e, &contract_id, &x, &y);
    +    let z = ContractClient::add_with(&e, &contract_id, x, y);
         assert!(z == 22);
     }
    

    Why

    The add_with::invoke syntax is pretty odd and not intuitive. The client syntax is something we're surfacing for calling other contracts. It seems usable as a way to call a developers own contract in tests, and then it gives them one way to do something for all contracts.

    Close #436

    Known limitations

    N/A

    opened by leighmcculloch 7
  • Authorization verification methods should fetch the function name from the host

    Authorization verification methods should fetch the function name from the host

    The check_*_auth methods take a Symbol as an input. This parameter should be the current contract function, so instead of taking it as input, it could be fetched from the host.

    opened by sisuresh 7
  • Auth: NonceAuth assumes a nonce is attached to an identifier and is too restrictive

    Auth: NonceAuth assumes a nonce is attached to an identifier and is too restrictive

    The NonceAuth type assumes that a nonce for checking authentication is attached to a single identifier. This is fine in a world where there is only a single authenticated identifier in a invocation, but the design of soroban-sdk-auth is intended to support multiple authenticated identifiers.

    When there are multiple authenticated identifiers it's unclear how the nonce should be used when authenticating with each identifier.

    I think this highlights a problem with bundling nonce validation and auth together, and I see at least a couple ways this could go, there could be other solutions too.

    1. If every identifier is to have their own nonce, then the nonce should probably be part of the Signature, not part of the function arguments. This would be a very opinionated approach, and it could introduce some very awkward constraints. For example, an identifier wouldn't be able to sign two messages with two different participants and succeed because its nonce would become invalidated or require ordering.

    2. If the nonce is intended to be the nonce of the invocation as a whole, then it should probably not be bundled into the auth logic, and instead should be independent logic. It should really take in probably a list of arguments that form a key, and that key has a nonce that is tracked and incremented. In a lot of our existing example contracts that list of arguments would be a single identifier. In a contract with multiple parties signing it might be multiple identifiers.

    I think (2) is what we should explore, and it would involve separating nonce logic from the auth logic, maybe into a separate crate.

    cc @jonjove @sisuresh

    opened by leighmcculloch 6
  • Provide methods that publish standard token events

    Provide methods that publish standard token events

    We should provide methods in the sdk that help contracts emit the events expected from the token interface. This will make token events less error prone and easier to emit.

    opened by sisuresh 0
  • Allow hashing of arbitrary data

    Allow hashing of arbitrary data

    Currently there is crypto().sha256(b: &Bytes) which allows to generate a (sha256) hash over given Bytes. Unfortunately this is limited to Bytes.

    What problem does your feature solve?

    This feature would allow to generate a hash over other data that is not necessarily only Bytes. One example would be to generate an ID out of user-provided input and use it as a storage key:

    pub fn add_data(env: Env, data: CustomStruct) -> BytesN<32> {
      let data_store = env.storage().get_unchecked::<_, Map<BytesN<32>, CustomStruct>>(symbol!("data")).unwrap();
      
      // this currently is **not** possible as the original value is not `Bytes`
      let id = env.crypto().sha256(data.to_raw().into());
      data_store.set(id, data);
      env.storage().set(symbol!("data"), data_store);
      id
    }
    

    What would you like to see?

    I would like to have a way to hash more than just Bytes.

    What alternatives are there?

    Currently none (as of discussion on discord).

    opened by hanseartic 0
  • Add docs to contract spec

    Add docs to contract spec

    We should consider adding docs to the contract specs generated by contracts.

    Why: So contract developers can communicate in the spec about the interface they're exposing. So that those comments can show up in other developers IDEs when they import, and in other places like the CLI.

    In practice this would mean taking the doc comments (/// or #[doc = "..."]) on functions, fields, types, etc and including them in the contract spec XDR.

    The contract specs would likely be outputted in several locations:

    • In code generated by contractimport! in the sdk.
    • In the soroban inspect command in the cli.
    • In the soroban gen command in the cli.
    • In the soroban invoke commands help pages in the cli.

    The effort to do this naively is really simple, it just requires modifying the XDR to include some additional fields, and modifying the SDK macros.

    Doc comments might be long and a CLI interface is compact, so we should expect some users of the docs to truncate the docs.

    There is a security concern we should evaluate, and that is that doc comments are executable in Rust applications.

    cc @willemneal

    opened by leighmcculloch 0
  • Add storage map

    Add storage map

    What

    Add storage map.

    Why

    So that there's a way to have a handle to an object that enforces type consistency and communicates clearly what the types are being stored.

    opened by leighmcculloch 0
  • Ability to run all contract tests across native + vm (wasm)

    Ability to run all contract tests across native + vm (wasm)

    Add the capability to run all contract tests with contracts executing on the Host and contracts executing in the VM to identify inconsistencies so that we can maintain a reliable test environment.

    opened by leighmcculloch 0
Releases(v0.3.2)
  • v0.3.2(Dec 8, 2022)

    What's Changed

    • Update soroban-env, stellar-xdr by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/788
    • Rename data to storage by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/786
    • Add ability to get current Budget from env in tests by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/789
    • Bump version to 0.3.2 by @github-actions in https://github.com/stellar/rs-soroban-sdk/pull/790

    Full Changelog: https://github.com/stellar/rs-soroban-sdk/compare/v0.3.1...v0.3.2

    Source code(tar.gz)
    Source code(zip)
  • v0.3.1(Dec 3, 2022)

    What's Changed

    • Fix docs by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/780
    • Move duplicate code in Env into function by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/781
    • Reorder the Env testutils functions by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/782
    • Move crypto functions by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/783
    • Minor doc clean up of crypto fns by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/784
    • Add testutils to build ed25519 keypairs by @heytdep in https://github.com/stellar/rs-soroban-sdk/pull/764
    • Bump version to 0.3.1 by @github-actions in https://github.com/stellar/rs-soroban-sdk/pull/785

    New Contributors

    • @heytdep made their first contribution in https://github.com/stellar/rs-soroban-sdk/pull/764

    Full Changelog: https://github.com/stellar/rs-soroban-sdk/compare/v0.3.0...v0.3.1

    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Dec 2, 2022)

    What's Changed

    • Update rust-version by @github-actions in https://github.com/stellar/rs-soroban-sdk/pull/757
    • Add Env::as_contract for testutils by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/761
    • Lean on workspace inheritance for deps for development by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/762
    • Remove soroban-env-host from soroban-spec dependencies by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/763
    • Update contract deployment to match the Env changes by @dmkozh in https://github.com/stellar/rs-soroban-sdk/pull/766
    • Reorganize recently added random functions by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/767
    • Make contract_id public in contract clients. by @dmkozh in https://github.com/stellar/rs-soroban-sdk/pull/768
    • Bump env and remove BigInt by @sisuresh in https://github.com/stellar/rs-soroban-sdk/pull/770
    • Update stellar-env and stellar-xdr by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/771
    • Run cargo clippy --fix by @sisuresh in https://github.com/stellar/rs-soroban-sdk/pull/772
    • Add soroban-ledger-snapshot by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/773
    • Add back ability to register wasm contracts at any id by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/774
    • Fix tests when run in some configurations by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/775
    • Add missing tests and comments by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/776
    • Undo breaking api change to registering tokens by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/777
    • Add missing docs for macros by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/778
    • Change gen JSON output from stream to array by @vinamogit in https://github.com/stellar/rs-soroban-sdk/pull/769
    • Bump version to 0.3.0 by @github-actions in https://github.com/stellar/rs-soroban-sdk/pull/779

    New Contributors

    • @vinamogit made their first contribution in https://github.com/stellar/rs-soroban-sdk/pull/769

    Full Changelog: https://github.com/stellar/rs-soroban-sdk/compare/v0.2.1...v0.3.0

    Source code(tar.gz)
    Source code(zip)
  • v0.2.1(Nov 4, 2022)

    What's Changed

    • Update rust CI job publish-dry-run params by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/756
    • Add common derives to generated contract types by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/759
    • Bump version to 0.2.1 by @github-actions in https://github.com/stellar/rs-soroban-sdk/pull/760

    Full Changelog: https://github.com/stellar/rs-soroban-sdk/compare/v0.2.0...v0.2.1

    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Nov 3, 2022)

    What's Changed

    • Add Logger::print in testutils by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/722
    • Update main example in Rust docs to use auto generated contract id by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/723
    • Add conversion from Address to Identifier. by @dmkozh in https://github.com/stellar/rs-soroban-sdk/pull/725
    • soroban-token-spec: Expose full token contract spec by @2opremio in https://github.com/stellar/rs-soroban-sdk/pull/724
    • Update stellar-xdr, soroban-env and get BytesM/StringM by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/726
    • Remove deprecated functions by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/729
    • Remove superfluous feature cfg by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/731
    • Fix token spec spec_xdr fn by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/732
    • Use a single target dir for builds by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/738
    • Bump version to 0.1.1 by @github-actions in https://github.com/stellar/rs-soroban-sdk/pull/743
    • Use stellar/binaries for binary installs by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/747
    • Remove crate-types unneeded by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/748
    • Remove panic-catching and fix tests that use newly-working native try_call by @graydon in https://github.com/stellar/rs-soroban-sdk/pull/746
    • Reintroduce an optimized aborting unwrap by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/750
    • Remove type checks for values delivered from the host by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/751
    • Add assert_with_error! macro by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/749
    • Rename panic_error! to panic_with_error! by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/752
    • Bump version to 0.2.0 by @github-actions in https://github.com/stellar/rs-soroban-sdk/pull/754

    New Contributors

    • @2opremio made their first contribution in https://github.com/stellar/rs-soroban-sdk/pull/724

    Full Changelog: https://github.com/stellar/rs-soroban-sdk/compare/v0.1.1...v0.2.0

    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(Oct 25, 2022)

    What's Changed

    • Fix soroban-auth testutils docs by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/744

    Full Changelog: https://github.com/stellar/rs-soroban-sdk/compare/v0.1.0...v0.1.1

    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Oct 7, 2022)

    What's Changed

    • Fix bug in contracterror by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/719
    • Bump version to 0.1.0 by @github-actions in https://github.com/stellar/rs-soroban-sdk/pull/721

    Full Changelog: https://github.com/stellar/rs-soroban-sdk/compare/v0.0.6...v0.1.0

    Source code(tar.gz)
    Source code(zip)
  • v0.0.6(Oct 6, 2022)

    What's Changed

    • Disable publish of example_vec test by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/556
    • Add Vec::keys,values tests by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/559
    • Add auth test by @sisuresh in https://github.com/stellar/rs-soroban-sdk/pull/560
    • Add iterator traits to Set by @accordeiro in https://github.com/stellar/rs-soroban-sdk/pull/561
    • Add u64 test vector by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/562
    • Improve caching of Rust build artifacts and update workflows by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/565
    • Update env by @sisuresh in https://github.com/stellar/rs-soroban-sdk/pull/566
    • Set the target-dir for cargo installs by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/568
    • Reorder cargo install options to match other repos by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/569
    • Add conversion traits for Set by @accordeiro in https://github.com/stellar/rs-soroban-sdk/pull/563
    • Improve Map docs by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/570
    • Update stellar-env-* to get fixes for map_keys, map_values by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/571
    • Add Set -> Vec conversion by @accordeiro in https://github.com/stellar/rs-soroban-sdk/pull/572
    • Add Vec to Set helpers by @accordeiro in https://github.com/stellar/rs-soroban-sdk/pull/573
    • Add publish dry run to build on release branches by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/576
    • Add get_current_call_stack method by @sisuresh in https://github.com/stellar/rs-soroban-sdk/pull/574
    • Separate the publish workflows and use new versions by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/578
    • Add release documentation by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/580
    • Fix Ord::cmp impls of all types by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/581
    • Fix conversions from guaranteed types by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/582
    • Update soroban-env-*, soroban-wasmi by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/583
    • Update soroban-env-* by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/584
    • Add BigInt *Assign operators by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/585
    • Use unchecked conversions for host return values for BigInt by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/586
    • Add BigInt mutable ref operators by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/587
    • Add BigInt mutable ref for PartialEq, PartialOrd by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/588
    • Reexport the byteslit::bytes proc-macro for use in bigint! by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/592
    • Remove unused deps by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/593
    • Heap of small fixes by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/594
    • Plumb through support for fallible contract invocations by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/596
    • Add BigInt other ref for ParitalEq, PartialOrd by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/598
    • Remove replay protection from the auth crate by @sisuresh in https://github.com/stellar/rs-soroban-sdk/pull/597
    • Remove the old fn::invoke[_xdr] fns by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/599
    • Remove the generated client _xdr fn and supporting infra by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/600
    • Replace EnvVal with RawVal in places that do not need it by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/602
    • Update soroban-env, stellar-xdr by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/604
    • Add a compile error for testutils with wasm by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/605
    • Add ability to assert on events by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/606
    • Put the test utilities for events behind a trait by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/607
    • Add bytesn! macro by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/608
    • Fix bytes_lit reexport refs by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/609
    • Only export the meta sections function in wasm builds by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/615
    • Update soroban-env, stellar-xdr by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/616
    • Fix auth test bug by @sisuresh in https://github.com/stellar/rs-soroban-sdk/pull/610
    • Add logger and debug events by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/611
    • Move some types into modules by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/620
    • Add implementation details to Vec docs by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/614
    • Remove Binary, FixedBinary by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/621
    • Only "export" fns on wasm target by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/613
    • Do not export contractimport!-ed contracttypes! by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/624
    • Add note to log! macro about not currently supported on wasm by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/627
    • Move derive_enum logic to a separate file by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/628
    • Add integer enum as a contract spec type by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/629
    • Use bytes-lit v0.0.4 and fix bytes!s with leading zeros by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/634
    • Add support for Result<> values by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/601
    • Add .soroban/ to .gitignore by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/637
    • Remove 10-char limit on error variants by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/638
    • Use refs as fn inputs and make args input to auth more flexible by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/639
    • Add docs to soroban-auth and align function names with docs by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/640
    • Adapt to soroban-env issue #434, non-panic EnvBase functions by @graydon in https://github.com/stellar/rs-soroban-sdk/pull/641
    • Fix warning by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/643
    • Remove deprecated functions by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/644
    • Fix warning by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/645
    • Add panic_error! by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/646
    • Add testutils to soroban-auth by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/647
    • Use as_bytes instead of to_bytes by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/648
    • Rename the client on imported contracts to Client by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/649
    • Add test of rollback on error by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/650
    • Add support for attributes on contractimpl, contractclient fns by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/651
    • Update soroban-env, stellar-xdr by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/653
    • Improve docs for panicerror! by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/656
    • Make symbol length errors simpler and clearer by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/655
    • Rename function to name in soroban-auth by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/652
    • Support debug logs in debug WASM builds by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/654
    • Add with_mutable_ledger_info by @sisuresh in https://github.com/stellar/rs-soroban-sdk/pull/659
    • Add a test to auth that also outputs its inputs/outputs by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/660
    • Add ledger info to auth test by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/662
    • Update rust-version by @github-actions in https://github.com/stellar/rs-soroban-sdk/pull/664
    • Fix contracttype with tuple structs by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/665
    • Support generating contracts containing tuple structs by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/668
    • Allow non-pub fields in contracttype structs by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/669
    • Make crate path configurable on contracttype, contracterror by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/671
    • Source Account Auth: Plumb account invoker through SDK by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/670
    • Update stellar-xdr, soroban-env by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/673
    • Update soroban-env by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/674
    • Update soroban-env, stellar-xdr by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/676
    • Use AccountId instead of BytesN<32> for account ids by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/677
    • Map Account invoker sigs and Account sigs to same identifier by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/680
    • Update xdr by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/682
    • Remove need for testutils in soroban-auth tests by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/684
    • Move soroban-auth tests together by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/685
    • Change tuple structs to be encoded as Vecs instead of Maps by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/688
    • Update stellar-xdr, soroban-env by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/691
    • Rename deployer functions to match XDR interface by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/692
    • Rename contract data to data by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/693
    • Make tests faster by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/694
    • Built in token contract spec by @sisuresh in https://github.com/stellar/rs-soroban-sdk/pull/686
    • Rename soroban-auth test names to describe tests by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/696
    • Make classic account auth more in line with the Core. by @dmkozh in https://github.com/stellar/rs-soroban-sdk/pull/690
    • Change Account::signer_weight from u32 to u8 by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/697
    • Use u8 for account thresholds. by @dmkozh in https://github.com/stellar/rs-soroban-sdk/pull/698
    • Remove init_wrap method from token spec by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/695
    • Make the source account in tests an existing account by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/699
    • Move ledger test utilities into Ledger by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/700
    • Add accounts test utilities by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/701
    • Add AccountId <> Identifier conversions by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/702
    • Use refs for AccountIds in Env interface by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/703
    • Provide a succinct way to invoke as a source account in tests by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/704
    • Remove unused types from token interface by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/705
    • Rename to_smart\classic token fns to import\export. by @dmkozh in https://github.com/stellar/rs-soroban-sdk/pull/706
    • Rename Invoker -> Address by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/707
    • Make contract_id optional in contract registrations by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/709
    • Reorder Env functions for better docs presentation by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/710
    • Update soroban-env, stellar-xdr by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/711
    • Bump version to 0.0.6 by @github-actions in https://github.com/stellar/rs-soroban-sdk/pull/718

    New Contributors

    • @dmkozh made their first contribution in https://github.com/stellar/rs-soroban-sdk/pull/690

    Full Changelog: https://github.com/stellar/rs-soroban-sdk/compare/v0.0.4...v0.0.6

    Source code(tar.gz)
    Source code(zip)
  • v0.0.4(Sep 2, 2022)

    What's Changed

    • Fix contractmetav0 custom section not emitted by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/386
    • Bump env to pick up unlimited budgets by @jonjove in https://github.com/stellar/rs-soroban-sdk/pull/387
    • Fix contractenvmetav0 not being emitted (again) by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/388
    • Fix complete ci job by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/389
    • Update cargo-hack used in ci by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/390
    • Add example add_bigint by @paulbellamy in https://github.com/stellar/rs-soroban-sdk/pull/393
    • Rename Binary=>Bytes, FixedBinary=>BytesN by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/394
    • Rename crate directories to match crate names by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/396
    • Add .profraw and lcov.info to gitignore by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/400
    • Remove self-circular testutils deps by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/401
    • Add test for contract fn name too long by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/403
    • Fix builds by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/404
    • Add compiler error when fn name too long and param count too many by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/402
    • Fix ci complete job (again) by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/405
    • Small refactor of contractimpl macros fn for collecting public methods by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/406
    • Set rust-version to 1.62 by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/410
    • Use cargo-nextest if installed when running tests by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/412
    • Update invoke-contract example to do a successful invoke by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/413
    • Add workflow that keeps rust-version up-to-date by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/416
    • Fix rust-version ci workflow by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/417
    • Fix rust-version ci workflow by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/418
    • Fix rust-version ci job by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/419
    • Fix rust-version ci job by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/420
    • Fix rust-version ci job by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/421
    • Fix rust-version ci job by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/423
    • Fix rust-version ci job by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/424
    • Update rust-version by @github-actions in https://github.com/stellar/rs-soroban-sdk/pull/422
    • Fix rust-version ci job by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/425
    • Fix up the add_bigint example build by @paulbellamy in https://github.com/stellar/rs-soroban-sdk/pull/426
    • Update rust-version by @github-actions in https://github.com/stellar/rs-soroban-sdk/pull/429
    • Fix BytesN Debug output by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/431
    • Rename bin! => bytes! by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/433
    • Native contract by @jonjove in https://github.com/stellar/rs-soroban-sdk/pull/435
    • Update stellar-env-* by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/437
    • Shift export feature out of contractimpl by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/409
    • Update stellar-env-* by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/440
    • Add Env::register_contract_wasm and import_contract example by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/438
    • Remove unnecessary ci build steps by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/441
    • Small refactor to store spec_xdr on the type it relates. by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/439
    • Fix first time build missing wasm file by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/443
    • Simplify the import example a little by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/444
    • Add a CONTRIBUTING.md by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/445
    • Add link to CONTRIBUTING.md in README by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/446
    • Add macros contractimport, contractclient, contractfile by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/411
    • Rename spec read fns by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/448
    • Rename soroban-spec::codegen to ::gen by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/449
    • Add names to input types in spec functions by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/452
    • Expose network id host function by @sisuresh in https://github.com/stellar/rs-soroban-sdk/pull/455
    • Rename tests to better reflect their intent by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/457
    • Fix trybuild tests by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/458
    • Compile error when contracttype struct field name too long by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/459
    • Compile error when contracttype enum variant name too long by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/460
    • Move ledger methods into Ledger struct by @sisuresh in https://github.com/stellar/rs-soroban-sdk/pull/456
    • Convert unit enums to single element vector by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/461
    • Expose host functions for event publishing by @jayz22 in https://github.com/stellar/rs-soroban-sdk/pull/464
    • Add Set type by @accordeiro in https://github.com/stellar/rs-soroban-sdk/pull/465
    • Replace TryFrom<EnvVal<>> with TryFromVal<> by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/466
    • Plumb binary memory copy fns into SDK by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/468
    • Move auth into the sdk by @sisuresh in https://github.com/stellar/rs-soroban-sdk/pull/473
    • Add linear memory copying to Bytes/BytesN by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/471
    • Auth changes by @sisuresh in https://github.com/stellar/rs-soroban-sdk/pull/475
    • Replace Vec<RawVal> with tuples of variable sizes in events publishing. by @jayz22 in https://github.com/stellar/rs-soroban-sdk/pull/469
    • Require struct/enum decode to consume entire Vec/Map by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/478
    • Update rust-version by @github-actions in https://github.com/stellar/rs-soroban-sdk/pull/479
    • Allow trailing comma in zero length vec! by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/483
    • Always build .wasm files before building tests by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/485
    • Check if rust-analyzer can parse project by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/487
    • Add sym! macro for const compile time Symbol creation by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/488
    • Self invocations in tests use contractclient by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/484
    • Store contract ID inside client struct by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/492
    • Add JSON representation for a soroban sc spec by @tamirms in https://github.com/stellar/rs-soroban-sdk/pull/490
    • Fix build-optimized make target by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/495
    • Add ref-op-ref for BigInt by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/496
    • Add BytesN support to spec by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/497
    • Add some helper fns for generating specs from files by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/498
    • Use VecM::to_string_lossy to simplify error handling in soroban-spec::json by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/500
    • Update rust-version by @github-actions in https://github.com/stellar/rs-soroban-sdk/pull/502
    • Update stellar-env-* by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/504
    • Handle account does not exist by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/505
    • Add Bytes <-> BigInt conversions by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/501
    • Make contract clients accept refs as args by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/508
    • Allow larger tuple to vec conversions by @sisuresh in https://github.com/stellar/rs-soroban-sdk/pull/509
    • Add Tuple to Vec ref conversion by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/510
    • Remove EnvType that is not really needed by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/511
    • Rename auth structures and fields for clarity by @jonjove in https://github.com/stellar/rs-soroban-sdk/pull/512
    • Move bytes-lit to its own repo by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/514
    • Bump bytes-lit dependency to 0.0.2 by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/515
    • Add Vec contains, first_index_of, last_index_of, binary_search by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/516
    • Add Vec push_front, pop_front by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/517
    • Add comments to the auth module by @sisuresh in https://github.com/stellar/rs-soroban-sdk/pull/513
    • Add Deployer by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/503
    • Add Bytes/BytesN conversions by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/519
    • Update binary_ function calls to bytes_ by @jayz22 in https://github.com/stellar/rs-soroban-sdk/pull/520
    • Update stellar-xdr, soroban-env-* by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/521
    • Map RawVal to Val in spec by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/522
    • Fix BytesN generated N type as usize by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/523
    • Make the file path of contract imports stable relative to Cargo.toml by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/524
    • Make auth types top-level in crate by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/525
    • Support sharing some limited contracttypes (auth) across crates by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/526
    • Update env (bigint change) by @jayz22 in https://github.com/stellar/rs-soroban-sdk/pull/527
    • Update stellar-env-* by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/531
    • Bump dependencies and add register_contract_token by @jonjove in https://github.com/stellar/rs-soroban-sdk/pull/535
    • Release automation by @graydon in https://github.com/stellar/rs-soroban-sdk/pull/537
    • Fix bump version PR title and publish job by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/538
    • Stop special casing the macro and spec crates in the members list by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/539
    • Update rust-version by @github-actions in https://github.com/stellar/rs-soroban-sdk/pull/540
    • Rename soroban-sdk-auth to soroban-auth by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/541
    • Add docs for deploy by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/542
    • Clean up docs for bigint! by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/543
    • Add docs for serde mod by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/544
    • Add minimal docs for testutils mod by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/545
    • Add minimal docs for iter mod by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/546
    • Hide EnvVal in docs by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/547
    • Add docs to macros by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/548
    • Hide Set by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/550
    • Add some top page docs by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/551
    • Update deps for release by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/552
    • Bump version to 0.0.4 by @github-actions in https://github.com/stellar/rs-soroban-sdk/pull/553
    • Fix release by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/554
    • Fix soroban-auth soroban-sdk dep version by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/pull/555

    New Contributors

    • @paulbellamy made their first contribution in https://github.com/stellar/rs-soroban-sdk/pull/393
    • @github-actions made their first contribution in https://github.com/stellar/rs-soroban-sdk/pull/422
    • @accordeiro made their first contribution in https://github.com/stellar/rs-soroban-sdk/pull/465
    • @tamirms made their first contribution in https://github.com/stellar/rs-soroban-sdk/pull/490

    Full Changelog: https://github.com/stellar/rs-soroban-sdk/compare/v0.0.3...v0.0.4

    Source code(tar.gz)
    Source code(zip)
  • v0.0.3(Jul 30, 2022)

Owner
Stellar
Stellar
Smart Contracts to be used by terra-bot

CosmWasm Starter Pack This is a template to build smart contracts in Rust to run inside a Cosmos SDK module on all chains that enable it. To understan

João Silvestre 2 Sep 25, 2022
Rust for the Windows App SDK

Rust for the Windows App SDK The windows-app crate makes the Windows App SDK (formerly known as Project Reunion) available to Rust developers.

Microsoft 212 Nov 22, 2022
[Unofficial] Azure SDK for Rust

[Unofficial] Azure SDK for Rust This repository is for the development of the unofficial Azure SDK for Rust. It is unofficial because it is not yet su

Microsoft Azure 390 Dec 30, 2022
A metamacro toolkit for writing complex macros.

Big Mac This crate contains the branching_parser! metamacro, which can be used to create complex macros with few lines of code. To use the macro, call

null 1 Nov 14, 2021
Ever got frustrated when you realize that the for loop you were writing

for_each_repeat Ever got frustrated when you realize that the for loop you were writing... fn foo(mut iter: impl Iterator<Item=i32>) { for i in it

null 1 Jun 18, 2022
Macros to make writing proc-macro crates easy

proc-easy Macros to make writing proc-macro crates easy. This crate provides mainly macros and supporting types and traits to reduce amount of boilerp

Zakarum 7 Jan 1, 2023
First Git on Rust is reimplementation with rust in order to learn about rust, c and git.

First Git on Rust First Git on Rust is reimplementation with rust in order to learn about rust, c and git. Reference project This project refer to the

Nobkz 1 Jan 28, 2022
A stupid macro that compiles and executes Rust and spits the output directly into your Rust code

inline-rust This is a stupid macro inspired by inline-python that compiles and executes Rust and spits the output directly into your Rust code. There

William 19 Nov 29, 2022
Learn-rust - An in-depth resource to learn Rust 🦀

Learning Rust ?? Hello friend! ?? Welcome to my "Learning Rust" repo, a home for my notes as I'm learning Rust. I'm structuring everything into lesson

Lazar Nikolov 7 Jan 28, 2022
A highly modular Bitcoin Lightning library written in Rust. Its Rust-Lightning, not Rusty's Lightning!

Rust-Lightning is a Bitcoin Lightning library written in Rust. The main crate, lightning, does not handle networking, persistence, or any other I/O. Thus, it is runtime-agnostic, but users must implement basic networking logic, chain interactions, and disk storage. More information is available in the About section.

Lightning Dev Kit 850 Jan 3, 2023
Telegram bot help you to run Rust code in Telegram via Rust playground

RPG_BOT (Rust Playground Bot) Telegram bot help you to run Rust code in Telegram via Rust playground Bot interface The bot supports 3 straightforward

TheAwiteb 8 Dec 6, 2022
`Debug` in rust, but only supports valid rust syntax and outputs nicely formatted using pretty-please

dbg-pls A Debug-like trait for rust that outputs properly formatted code Showcase Take the following code: let code = r#" [ "Hello, World!

Conrad Ludgate 12 Dec 22, 2022
Playing with web dev in Rust. This is a sample Rust microservice that can be deployed on Kubernetes.

Playing with web dev in Rust. This is a sample Rust microservice that can be deployed on Kubernetes.

André Gomes 10 Nov 17, 2022
🐀 Building a federated alternative to reddit in rust

Lemmy A link aggregator / Reddit clone for the fediverse. Join Lemmy · Documentation · Report Bug · Request Feature · Releases · Code of Conduct About

LemmyNet 7.2k Jan 3, 2023
Applied offensive security with Rust

Black Hat Rust - Early Access Deep dive into offensive security with the Rust programming language Buy the book now! Summary Whether in movies or main

Sylvain Kerkour 2.2k Jan 2, 2023
Rholang runtime in rust

Rholang Runtime A rholang runtime written in Rust.

Jerry.Wang 17 Sep 23, 2022
Easy-to-use optional function arguments for Rust

OptArgs uses const generics to ensure compile-time correctness. I've taken the liberty of expanding and humanizing the macros in the reference examples.

Jonathan Kelley 37 Nov 18, 2022
A language server for lua written in rust

lua-analyzer lua-analyzer is a lsp server for lua. This is mostly for me to learn the lsp protocol and language analysis so suggestions are helpful. T

null 61 Dec 11, 2022
Rust library that can be reset if you think it's slow

GoodbyeKT Rust library that can be reset if you think it's slow

null 39 Jun 16, 2022