Motivation
Hyperledger Iroha 2 supports several client SDK libraries, such as Java SDK, Javascript SDK or Python SDK. The way this works currently is by exporting language agnostic schema file that describes all structures exchanged between server (written in Rust) and the client (written in the language of choice - Java, Javascript, Python). SDK developers then build their respective libraries with some automated process of code generation out of the schema. Often times changes in the schema are such that they require manual intervention in the transcription process but if nothing else it is required by every SDK to build and maintain the code for code generation out of schema. To solve this problems for all SDKs in once place it has been decided to generate a shared object that exposes `extern` functions SDK client libraries can link against dynamically
Abstract
We have the dsupport
Repositories
1. cbindgen(git@github.com:mozilla/cbindgen.git),
2. iroha2(git@github.com:hyperledger/iroha.git) branch: `iroha2-stable`
3. iroha2-java(git@github.com:hyperledger/iroha-java.git)
Milestones
Eval 1:
- Add the functionality to parse function signatures with associated types out of MIR to cbindgen (either just parse
- open a PR to merge this code into cbindgen
Eval 2:
- Use iroha_ffi to generate extern functions out of existing Rust code, make corrections to the iroha_ffi library in this process
- Use cbindgen
Eval 3:
- Refactor the code, check what high-priority tickets can be implemented in a reasonable time
- Update the codebase with selected tickets
- Conduct manual testing
- Address the code bugs
Eval 4:
- Document the mentorship results
- Present final results
Timeline
Dates | Tasks/Plan | Status |
---|---|---|
June 1 - June 14 | revisit knowledge of Rust | |
June 15 - June 28 | fork the cbindgen repository | |
June 29 - July 12 | ||
July 13 - July 26 | ||
July 27 - Aug 9 | ||
Aug 10 - Aug 23 | ||
Aug 24 - Sept 6 | ||
Sept 7 - Sept 20 | ||
Sept 21 - Oct 4 | ||
Oct 5 - Oct 18 | ||
Oct 19 - Nov 1 | ||
Nov 2 - Nov 12 |
Mentors
Name | Time zone | Discord ID | Telegram ID | Email ID |
---|---|---|---|---|
Marin Veršić | UTC+2 | mversic | @mingler101 | marin.versic101@gmail.com |
Mentees
Name | Time zone | Discord ID | Telegram ID | Email ID |
---|---|---|---|---|
Orange | UTC+8 | orangeng | @orangeng | ngquanhao@gmail.com |