Rust - impresii despre el

Serde e librarie serioasa, folosita foarte mult in ecosistemul Rust.

Go are real world usage foarte mare. Multe firme au trecut de la Python la Go si au obtinut imbunatatiri semnificative de performanta.

1 Like

Ma indoiesc ca Rust e mai usor decat C# si Java, pe care nu prea le-as pune in aceeasi oala cu C si C++ dincolo de faptu ca au similaritati la sintaxa.

3 Likes

Adevărul e că e destul de greu să găsești un limbaj cu care să nu ai spor de performanță față de Python :slight_smile:

3 Likes

All languages spend the same time waiting for I/O to finish :smiley:

1 Like

Impresia mea despre Rust, dupa ce am facut un toy project pentru un worker de transformari grafice:

  • scalari
  • rotiri
  • gradiente
  • blending
  • transformari bazate pe curbe

Partea de transformari grafice a fost ok de implementat, rezultatul era destul de acceptabil ca si viteza.

Pe partea de worker, designul pe care l-am ales nu se potrivea cu Rust. Am vrut sa am un worker generalist care depinzand de structura unui mesaj de pe coada sa aleaga la runtime generatorul/transformatorul. Raspunsurile de la transformatoare/generatoare aveau structuri asemanatoare.

Mult cod duplicat la structurile de date pe care trebuia apoi sa le serializez. Destul de greu sa faci un factory fara sa aprofundezi chestiuni mai avansate. Nu mi-a dat un sentiment ca-s in control a ceva in plus fata de C++ sau C#. Prea multa complexitate DEGEABA.

Crate-urile sunt faine, activatul de feature-uri la ele e destul de nice. Type safety-ul e fain. Faptul ca trebuie sa handle-uiesti orice eroare sau posibilitate de return gresit e iarasi destul de frumos implementat, dar nicidecum ceva imposibil de facut in alte limbaje de programare.

Per total, nu m-as mai atinge de Rust. Pur si simplu mi se pare ca am invatat extrem de mult din el ca sa fac ceva super simplu. La sfarsitul proiectului aveam un gust amar.

Mai bine il faceam in C++.

6 Likes

Neadevarat. Nu vrei sa vezi un indian suparat. N-are ce pierde ca stie ca la hourly rate-ul lui gaseste alt job imediat.

Neadevarat. O groaza de companii serioase fac outsourcing pe proiecte “vitale” cum zici tu. Exista indieni si indieni, asa cum exista si romani si romani sau ucraienieni si ucraieneni si americani si americani si germani si germani.

Eu as zice sa o lasam mai moale cu chestia asta cu “indienii” caci chiar nu conteaza natia.
Ne gasim, unii din noi, romani, sa radem fara dinti, de indieni. Rade Lolek de Bolek.
Eu am vazut delasare, neglijenta, incompetenta, minciuna, nesimtire peste tot, la diverse niveluri si marimi de companii.

1 Like

C++ = :nauseated_face::face_vomiting::face_vomiting:

(Imi pare ca n-am putut gasit la 1 bere si un sfarsit de zi un argument mai bun decat emoticonuri)

Eu sunt foarte curios daca cineva de pe aici a facut un produs cu Rust?

Cum a fost experienta? S-a adoptat usor de devi? CI/CD? Gotchas non-evidente?

1 Like

Exista mai multe proiecte blockchain, in care smart contracts se scriu in Rust.

Unul dintre ele este Elrond.

Eu ce-am inteles din research-ul care l-am facut e ca Rust e potrivit/eficient pentru a construi, in principiu, alte limbaje, framework-uri.

Care le stiu eu, din cap:
Prisma ORM - construit pe Rust
Deno (successorul la Node.js) - construit pe Rust

Pare a fi un inlocuitor, modern, al C-ului.

3 Likes

Știu că e doar un video scurt despre rust, dar zice la un moment dat:

By default, every variable in rust is immutable. This allows values to be used in stack memory […]. However, mutable values […] are stored on the heap

Nu are legatură mutabilitatea cu unde sunt stocate variabilele, pot fi variabile mutabile/imutabile și pe heap și pe stack. Și cumva nu a ales exemplul bun, string literals, în general(din ce știu eu), nu sunt stocate nici pe heap nici pe stack, ci într-o secțiune read-only din binary:

let mut s = "Hello"; // let mut s: &'static str = "Hello";

Aici nu e nimic stocat pe heap, doar pointer-ul către string literal e mutabil, dacă zic:

s = "abc";

Nu modific decât acel pointer, nu e mutabil string-ul în sine și oricum nu e pe heap. Pentru string pe heap: String(nu știu dacă implementarea default face asta dar poate fi chiar și el pe stack cu small-string-optimization, cum e std::string din C++).

2 Likes

swc este practic un replacement pentru babel, adica un tool care compileaza typescript/es6/etc in plain javascript.

Aici puteti vedea comparatia dintre cele 2

Ultima versiune de Next.js: v12, include acest swc care, spun ei, ar fi de 3x / 5x mai rapid ca babel, la refresh time, respectiv la build time

1 Like
1 Like

https://news.ycombinator.com/item?id=11337399
coreutils rescris in Rust

Aș zice că poate fi mult mai rapid pentru cineva care știe C decât să citească Rust Book.

Sper ca anul ădta să scriu mai mult decat un hello world in Rust :facepalm: