Comments (4)
This issue needs to be properly scoped. The title makes this an issue about FCMPs over RingCT which this definitively should not be the issue for.
Is this:
- Blockers towards introducing Rust.
Unopinionated on the topic, not sidetracked by if/why. Solely covering why it may not be possible in the first place.
- Introducing Rust.
A place for people to discuss if/why, blockers being reasons for why not.
I'd personally prefer the former as it eliminates wide classes of arguments from this issue specifically and leaves them for a later date, when we have reasons for why (as we don't currently have any yet other than the vague concept of FCMPs which is not ready for merge and has no active CCS, unless one argues for Rust in general).
dethereminal's comment argued for Rust in general yet does so by advertising an anti-feature. Now I feel obligated to point out why Rust is 'actually bad' for having a package manager, per the opinions of Monero, when that's completely irrelevant here.
And then literally as I typed this, @SyntheticBird45 contributed more of a shill comment for Rust than I think I've ever written (despite being the Rust evangelist in my friend group). I don't want to spend the time rebuking it, so I'll instead repeat we should have a complete moratorium on all discussions about Rust and solely discuss the blockers to it if it were to happen.
Monero offers downloads for:
Windows, 64-bit
Windows, 32-bit
macOS, Intel
macOS, ARM
Linux, 64-bit
Linux, 32-bit
Linux, armv7
Linux, armv8
Linux, riscv64
Android, armv7
Android, armv8
FreeBSD, 64-bit
per the latest release. I'd accordingly argue that's Monero's own tier one/two and ignore documentation-only targets (which are equivalent to Rust's tier three, and seem to completely overlap?).
from monero.
I support adding Rust codebase to the project in general. Rust blocks memory-leaks, has built-in package manager and many features. It is also being used by many professional and world-wide apps, including Linux. It would be easier for other developers to develop, compile and run.
Removed due to issue rename
Targeting part of the Rust codebase should be similar to the current one, where we officially build and publish the binaries and document the rest. That means the Tier 1 and Tier 2 is supported and Tier 3 is only left with documentation just like as it is now.
I also think we should start supporting aarch64 on darwin (macOS) as Apple is moving to the ARM (aarch64/arm64) architecture.
from monero.
I support adding Rust codebase to the project in general. Rust blocks memory-leaks, has built-in package manager and many features. It is also being used by many professional and world-wide apps, including Linux.
I think Rust isn't near being discriminated or belittled. There are no doubts that it is a great language if not the greatest to become language. But there are valid critics against adding Rust into the monerod codebase. Ones being: build targets, binary size, interoperability, exploit mitigations support accross FFI, etc...
This is something that will require a non-trivial amount of tinkering accross the repository.
Rust blocks memory-leaks
TBC, monerod compile with almost all exploit mitigation flags enabled + Memory leaks aren't considered an unsafe behavior by Rust.
from monero.
Tier 2:
- ARM macOS
- ARMv7 Linux
- RISC-V 64-bit Linux
- ARMv7, ARMv8 Android
- x86-64 FreeBSD
The rest of the platforms we build binaries for are tier 1, with the caveat that the tier-one Windows support by Rust is for Windows 10+. Since Windows 8.1 is over a year past EOL, I don't blame them for this decision. That... may work on older Windows version, just in an un-officially-supported fashion? Or may require shipping a distinct Windows 7 build from their tier-three Windows 7 target (or using an old Rust compiler which still had older Windows supported as tier one/two).
For the tier-two targets discussed, I'm not concerned. ARM macOS is widely used by the Rust community to the point I'm surprised it hasn't had the necessary steps to become tier-one (maybe due to commentary on acquiring/provisioning the hardware for it?). Given the large community using it without noise about issues, I'd legitimately assume it to be void of increased-frequency platform-specific bugs. Given people also use Rust for Android development, I'd have similar thoughts there.
That isn't to endorse every tier-two target as perfect. It's to say, yes, they're not tier-three and I largely assume them to work especially when we use the most popular ones. Current proposed usecases also use a minimal subset of platform-specific code (not hooking the OS, nor writing SIMD code, so current poposals may use just a couple lines for system RNG and so on) so I wouldn't expect impact there. I'd expect most impact to actually come from LLVM. Since we use LLVM on FreeBSD, it appears Monero has adopted LLVM use into its tier-one (at least for certain targets). Accordingly, I'm not concerned there either.
from monero.
Related Issues (20)
- Monero RPC Wallet loosing connection to the daemon HOT 4
- master branch does not contain newer checkpoints HOT 1
- Funds are blocked every time I send them with RPC Wallet HOT 1
- tx_memory_pool is now private in master. HOT 2
- Suggestion: When there is a backlog at the current fee level, print a menu showing backlogs and costs at each fee level HOT 4
- monerod memory usage on busy public node HOT 2
- MacOS/MoneroGui: button to do first-run install HOT 9
- Support getting unconfirmed transfers from monero-wallet-rpc without fetching from pool
- Support updating the pool state in monero-wallet-rpc `refresh`
- Immediate Crash on Launch with Qt Quick Errors and OpenGL Context Failure in monero-wallet-gui HOT 1
- Hide the sending address and prompt that destinations do not exist HOT 5
- Build failure with Boost 1.85.0 HOT 4
- The Monero core software wallet API will (probably) switch from 'wallet2.h' to 'wallet2_api.h'
- Remove refresh from call from import_multisig HOT 3
- Daemon recurring error message HOT 9
- Daemon crashed last night with only a warning HOT 18
- A lot of 150/2 transactions in the txpool causes memory spike / OOM HOT 34
- aggregating multisig partial signatures HOT 8
- Cannot connect wallet client to daemon HOT 9
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 monero.