Giter Site home page Giter Site logo

Comments (6)

tomtau avatar tomtau commented on May 24, 2024 1

@martinholovsky https://doc.rust-lang.org/cargo/reference/manifest.html#the-profile-sections

Any manifest may declare a profile, but only the top level package’s profiles are actually read. All dependencies’ profiles will be overridden.

rust-abci is a library, i.e. won't be top-level. My guess (from that description) is that regardless what's declared here, profiles of application crates override it (so it should be declared in Cargo.toml of applications rather than here).

from rust-abci.

tac0turtle avatar tac0turtle commented on May 24, 2024

I believe this issue may be relevant in tendermint to change the int64 types to uint64 types in proto files where needed?

from rust-abci.

liamsi avatar liamsi commented on May 24, 2024

I agree with you @tomtau. Also, @marbar3778 is right that the proto files (and hence the generated code) should match the tendermint repo. Actually discussing signed vs unsinged integers has a long tradition:
tendermint/tendermint#2684
https://blog.cosmos.network/choosing-a-type-for-blockchain-height-beware-of-unsigned-integers-714804dddf1d

IIRC, we wanted to switch to unsigned where values could never go negative but focused on other things.

from rust-abci.

tomtau avatar tomtau commented on May 24, 2024

Ad that block height discussion: Rust does under/overflow assertion checks in debug releases by default; one could enable them in production builds in a Cargo profile configuration.
Anyway, I guess except for "logic" (#49), there could be some value sanity checks/assertions as well

from rust-abci.

tomtau avatar tomtau commented on May 24, 2024

Besides block height (and perhaps time), there are a few other examples where the protobuf type doesn't indicate to what the specs say -- for example, for Tags: https://tendermint.com/docs/spec/abci/abci.html#tags it mentions keys/values must be UTF-8 strings, but they are Vec.
On the other hand, I've been abusing this particular part and it doesn't seem to have any effect on Tendermint (RPC happily returns them base64-encoded). I guess that only affects indexing / querying or the ABCI specs documented some no longer valid assumption?

Another thing is "Query": https://tendermint.com/docs/spec/abci/abci.html#query

Apps MUST interpret '/store' as a query by key on the underlying store.

Currently, the trait doesn't force implementors to do so -- on the other hand, I didn't observe any consequences if one doesn't do so?

from rust-abci.

martinholovsky avatar martinholovsky commented on May 24, 2024

Ad that block height discussion: Rust does under/overflow assertion checks in debug releases by default; one could enable them in production builds in a Cargo profile configuration.
Anyway, I guess except for "logic" (#49), there could be some value sanity checks/assertions as well

Any reason not having

[profile.release]
overflow-checks = true

in Cargo.toml?

from rust-abci.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.