Giter Club home page Giter Club logo

Comments (4)

coderofstuff avatar coderofstuff commented on July 21, 2024

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.

yuseferi avatar yuseferi commented on July 21, 2024

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.

coderofstuff avatar coderofstuff commented on July 21, 2024

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.

coderofstuff avatar coderofstuff commented on July 21, 2024

Closing due to inactivity

from rusty-kaspa.

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.