16 Punkte von xguru 2024-06-24 | 10 Kommentare | Auf WhatsApp teilen
  • Unternehmen (nicht öffentlich genannt), das Dienste für Hunderte Millionen Nutzer bereitstellt und in Kernsystemen C und C++ einsetzt
  • Im Laufe des Jahres 2023 wurde diskutiert, welche Sprache eingeführt werden soll: Rust oder Zig
  • Zentrale Kriterien:
    1. Interoperabilität mit C
    2. Skalierbarkeit des Engineerings (Hiring, Wartbarkeit usw.)
  • Endgültige Wahl: Zig
  • Der Auswahlprozess wird geteilt, weil er gut zeigt, welche Faktoren große Unternehmen berücksichtigen, wenn „Code auf vielen unterschiedlichen Zielen läuft und Hunderte Millionen Nutzer betrifft“

Die Bedeutung der C-Interoperabilität

  • Die Bibliothek, die neu geschrieben werden soll, könnte auf allen Plattformen genutzt werden (Web, Mobile, VR-Headsets, Spielkonsolen, Desktop usw.)
  • Deshalb sind eine C-API und die Nutzung über FFI der einzige Weg, die Ausführung auf allen Plattformen sicherzustellen

Zentrale Diskussionsthemen

Rust

  1. Damals mehr als 25-mal so beliebt wie Zig (laut Umfragen und Subreddit)
  2. Bereits länger in einem stabilen Zustand
  3. Die Unterstützung aus der Industrie über die Rust Foundation wirkt solide
  4. Hervorragendes LSP und gute Developer Experience
  5. Cargo: ein Paketmanager auf Spitzenniveau in der Branche
  6. Memory Safety und „kein Undefined Behavior“ (nicht vollständig zutreffend, wurde in der Diskussion aber erwähnt)
  7. Wenn man sich von C++ lösen will, ist Rust mit seiner geringeren Wahrscheinlichkeit für Speicherfehler und Undefined Behavior besser geeignet
  8. SIMD-Unterstützung in der nightly-Version
  9. WASM-Unterstützung ebenso reibungslos wie bei Zig
  10. Leistungsmäßig mit Zig gleichauf oder in manchen Fällen „deutlich schneller“
Rusts C-Interoperabilität:
  • Rust hat ein reiches eigenes Ökosystem, daher ist die Bedeutung der C-Interoperabilität relativ geringer
  • Gute Möglichkeiten zur Anbindung an High-Level-Sprachen wie Python-Bindings
  • Das Argument lautete, dass die Vorteile von Rust die Nachteile beim Bereitstellen von C-Bindings aufwiegen

Zig

  1. Für Entwickler mit C/C++- oder TypeScript-Hintergrund leicht zu erlernen
  2. Bietet Entwicklern mit C-Hintergrund ein angenehmes Programmiererlebnis
  3. Der Zig-Compiler kann auch C und C++ kompilieren, was bei Dependency Management und beim Bauen von Bibliotheken mit C ABI vorteilhaft ist
  4. Unterstützung für viele Zielplattformen ist sehr einfach (zig targets wurde besonders gelobt)
  5. Schnelles Schreiben von Software fällt leicht (native Vector-Unterstützung, Nutzung von SIMD usw.)
  6. Kompatibel mit bestehenden Debuggern
  7. Hervorragendes Build-System (100-fache Verbesserung gegenüber dem bisherigen Makefile)
  8. Hohe finanzielle Transparenz der Zig Software Foundation
  9. Bestehender C++-Code kann schrittweise portiert und „verziggt“ werden
  10. Löst Linker-/Compiler-Probleme für alle Zielplattformen zuverlässig

Fazit

  • Zig reduziert den Zeit- und Arbeitsaufwand deutlich, der für das Portieren der bestehenden Codebasis und die Sicherstellung der Kompatibilität mit allen Plattformen nötig ist
  • Unerwartete Entscheidungsfaktoren:
    1. Die leichte Erlernbarkeit und das Hiring hatten größeren Einfluss als erwartet (zugunsten von Zig)
    2. Die Developer Experience rund um die Toolchain spielte eine wichtige Rolle
    3. Der Zig-Compiler und das Build-System halfen stark wegen ihrer Kompatibilität mit der bestehenden Codebasis
    4. Rusts Ökosystem, Community und Zusagen zur Memory Safety hatten weniger Einfluss als erwartet

10 Kommentare

 
qpfjf56 2025-04-30

Ich habe den interessanten Beitrag sehr gern gelesen! Als ich mich über node, bun und deno informiert habe, bin ich darauf gestoßen, dass bun in der mir unbekannten Sprache Zig geschrieben wurde, und war neugierig, was das für eine Sprache ist — danke für diesen guten ersten Einblick!

 
ahwjdekf 2025-01-17

Ein großes Problem bei zig ist, dass es bei Fehlern im vom Benutzer geschriebenen Code während der Kompilierung nicht die genaue Position oder entsprechende Informationen anzeigt. Es scheint nur bis zur Standardbibliothek zu gehen.

 
cosine20 2024-07-01

Wenn man sich die Überlegungen, Diskussionspunkte und das Fazit anschaut, scheint es von Anfang an gar kein Umfeld gewesen zu sein, in dem Rust notwendig war. Haben Sie jemals einen Lieferfahrer gesehen, der für Essenslieferungen mit einem Offroader unterwegs ist?
Man muss zwar in einer nativen Sprache entwickeln, aber wenn es sich nicht um speicherkritische Aufgaben handelt, ist es richtig, die Sprache zu wählen, mit der sich leichter entwickeln lässt. Darüber muss man doch nicht gleich ein ganzes Jahr lang diskutieren...

 
[Dieser Kommentar wurde ausgeblendet.]
 
botplaysdice 2024-06-24

An Hunderte Millionen Nutzer gerichtet....

Ich frage mich, welche Firma das ist. Es scheint ein Unternehmen zu sein, das sich nicht an formale Verfahren wie Authentifizierung gebunden fühlt ... beneidenswert ...

 
bus710 2024-06-24

Ich schaue mir Zig etwa einmal im Jahr an, und es fühlt sich so an, als hätte es fast jedes Jahr Breaking Changes gegeben;;
Außerdem bringt die Sprache selbst keine Bibliotheken für Queues oder Message Passing zwischen Threads mit, sodass sie im Vergleich zur Reife von Rust wohl noch einen weiten Weg vor sich hat.
Natürlich ist das vielleicht kein großes Problem, wenn man sich mit den OS-APIs bestens auskennt, aber …

 
tested 2024-06-24

Rust ist mehr als 25-mal beliebter als Zig, aber bei der Jobsuche scheint Zig im Vorteil zu sein.

 
rlcks97 2024-07-01

Ich denke, das liegt an Punkt 1: Entwickler mit C/C++- oder TypeScript-Hintergrund können es leicht lernen.

 
daejin 2024-06-24

Bietet Entwicklern mit C-Hintergrund ein angenehmes Coding-Erlebnis
Erleichtert das schnelle Schreiben von Software (native Vector-Unterstützung, Nutzung von SIMD usw.)

Es fühlt sich an, als würde man zum ersten Mal Python lernen

 
tsboard 2024-06-24

Als ich gesehen habe, dass Bun in der Sprache Zig entwickelt wird, habe ich mich gefragt, warum ausgerechnet Zig. Dank dieses guten Vergleichs mit Rust verstehe ich das jetzt. Davon abgesehen scheint die Sprache C wirklich unsterblich zu sein.