Comments (4)
The proposal that brought about this change is in https://github.com/kaspanet/kips/blob/master/kip-0001.md (also go deeper into the Discord messages linked in that KIP).
from rusty-kaspa.
Thank you for referencing.
there are two big motivates have been mentioned:
1. Refactored and extensible codebase. The current codebase has evolved through years of R&D and uncertainty and has a decent amount of technical debt. Some components are fragile and are hard to maintain and extend. A reform of the codebase is crucial for making it accessible to new developers and for making it possible to implement new major features (e.g., smart contract support; consensus ordering algorithm upgrade)
I think this is the code structure and design problem, it does not matter with which programming you developed if you do not consider best practices there will be such tech debt issues. So, still, you had the opportunity to rewrite it in Golang.
2- Efficiency and performance. To reach maximal efficiency and higher block and transaction rates, we suggest that the system needs to be rewritten in a performance-oriented programming language and with a performance-oriented mindset. Using Rust for the rewrite will open many opportunities in this aspect, while still providing many high-level constructs which are essential for realizing a complex system like Kasp
there are a couple of networks that have been written in Golang with high performance like
I'm wondering how you got to this reason that you will get better performance if you use rust.
as a Golang and C++ developer, I would say if the performance is the problem, refactor the code to get higher performance, because I would say with the wrong code style and structure the performance even in C++ could go worse than JAVA !!!
I feel this decision has not been well enough evaluated and the code causes the same issues in Rust.
from rusty-kaspa.
If you're interested in the discussions that was had about the decision the full text of the rationale can be found in: https://discord.com/channels/599153230659846165/844142778232864809/993245032670842991
Then follow through the discussion that was had over the next few days after the proposal https://discord.com/channels/599153230659846165/909907923084382218/993270871319904336
Please do go through these discussions as it was extensively discussed. Rewriting in rust wasn't a decision made lightly. It was done with careful consideration and deliberation.
To directly address some of the points you mentioned
So, still, you had the opportunity to rewrite it in Golang.
This would mean having to deal with the same pitfalls such as dealing with GC or lack of immutability (at the time).
refactor the code to get higher performance ... the code causes the same issues in Rust.
The rewrite isn't simply a copy-the-same-code-in-a-different-language kind of rewrite. Rust was chosen because it had a better suitability for the high performance goals for the upcoming features that were being prepared for such as higher BPS and later on DagKnight. Rewriting in Go or continuing to work with the old codebase would've taken significantly more effort AND time than rewriting in Rust from first principles.
from rusty-kaspa.
Closing due to inactivity
from rusty-kaspa.
Related Issues (20)
- Investigate and document hardware setups that optimize disk write and lifespan HOT 3
- subscribeUtxosChanged Method Invalid Types Issue: Throws RuntimeError with Account Object HOT 1
- Rare chance of initial pruning proof building issues
- Panic logs should appear both in the standard log and the error log files HOT 2
- KIP9: addition of mass field in transaction
- Handling of Payload and/or OP_RETURN HOT 1
- Submitting TXs with incomplete keys must produce easily understandable error
- Locally built proof failed validation: the proof doesn't have sufficient blue work in order to replace the current DAG HOT 1
- Building WASM framework failed HOT 2
- Running ./build-web did not generate the 'web' or 'react-native' libraries HOT 2
- Execute node demo.js and report an error HOT 5
- May I ask if partial signatures are supported? I donβt see a reference to sign_with_multiple_v2 in the wasm package. HOT 1
- How to construct a partially signed transaction HOT 4
- Create a panic report with details HOT 1
- Address github action warnings HOT 3
- rusty-kaspa v0.14.1 does not compile on Debian 11 - x86_64 - kernel: 5.10.0-28-amd64 - stable-x86_64-unknown-linux-gnu updated - rustc 1.78.0 HOT 1
- v0.14.1 DNS lookup failed when run on testnet with command kaspad --testnet --utxoindex HOT 4
- [ERROR] thread 'main' panicked at database/src/db/conn_builder.rs:117:114: HOT 7
- Weird issue starting integrated node HOT 9
- I am receiving an error trying to start the integrated node HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rusty-kaspa.