Rust - ist das hier um zu bleiben?

Gast #7279368
Lesenswert?

Jörg W. schrieb:
> Du hast die Frage nicht beantwortet.

Wer diese Frage stellt, hat das Video nicht gesehen.
Das ist offensichtlich.

> Aber willst du offenbar nicht.

Genau. Wozu auch? Die Frage hat gar nichts mit Rust oder dem Video zu 
tun.

> Da empfiehlt man nun schon mal, dass die
> Leute stattdessen doch lieber gleich was anderes machen sollten, isses
> dir auch nicht recht.

Ach. Du bist ja so großzügig.
Du bist so ein großzügiger Troll, der hier nur nicht gelöscht wird, weil 
er Moderator ist.

Soll ich dir mal was sagen? Hm?
Gucke doch das Video. Wie wäre das?
Dann weißt du auch, worum es geht, und dann musst du dich hier nicht 
immer weiter bis auf die Knochen blamieren.

Peinlich, peinlich.
Gast #7279551
Lesenswert?

@Jörg W.

wenn es um C++2 geht - dann geht es eher darum das der Wechsel zwischen 
C++ und C++2 so absolut leicht und einfach sein soll wie möglich d.h. am 
besten 100% kompatibel - damit Firmen wie Microsft oder google die 
Mio/Mrd Zeilen von C++ haben leichter zwischen den Welten wandeln können 
ohne die geringsten Problem mit Kompiler/Toolchain etc. - bei solchen 
Codemengen, die ja täglich extrem wachsen sind auch mehrstufige 
Migrationen Richtung einfacher/fehlerfreier interessant

die Leute müssen sich einfach mal die Dimensionen vorstellen: wenn 2000 
oder mehr Entwickler an einem Codeberg arbeiten kann man teilweise im 
Sekundentakt die Repos wachsen sehen - das ist manchmal ganz schön 
beängstigen

@MaWin:

eine einfach kurze Antwort hätte gereicht - nicht jeder hier ist ein 
Troll und nicht alle sind einfach nur faul
Moderator Persönliche Seite #7279556
Lesenswert?

cppbert schrieb:
> wenn es um C++2 geht - dann geht es eher darum das der Wechsel zwischen
> C++ und C++2 so absolut leicht und einfach sein soll wie möglich d.h. am
> besten 100% kompatibel

Das ist mir durchaus beim Ansehen des Videos (und der ja teils 
euphorischen Kommentare) klar geworden. Ich fürchte trotzdem, dass das 
nicht viel bringt, und dass es sinnvoller ist, es so wie Firefox zu 
machen und stückweise Subsysteme neu zu implementieren.

Dass das nicht von heute auf morgen gemacht ist, sieht man natürlich 
auch an Fifrefox.
Gast #7279569
Lesenswert?

Jörg W. schrieb:
> Ich fürchte trotzdem, dass das
> nicht viel bringt, und dass es sinnvoller ist, es so wie Firefox zu
> machen und stückweise Subsysteme neu zu implementieren.

ja das Herb Sutter Beispiel ist ja nur ein Aufrüttler - was wäre wenn 
C++ sowas wie die Rust Editions hätte - was wäre möglich - Herb muss ja 
immer der am-weitesten-über-den-Tellerrand-schauer sein

aber auch Carbon von Chandler Carruth ist nicht ganz uninteressant

ich würde auch einfach neue Subsystem in Rust machen - aber ich muss 
auch keine 100Mio oder 2Mrd Zeilen Code unter Kontrolle halten - bei 
diesen Größenordnungen könnten Verbesserungen im niedrigen/sten 
Prozentbereich schon sehr viel bedeutung haben
Gast #7279582
Lesenswert?

Jörg W. schrieb:
> Das ist mir durchaus beim Ansehen des Videos (und der ja teils
> euphorischen Kommentare) klar geworden. Ich fürchte trotzdem, dass das
> nicht viel bringt, und dass es sinnvoller ist, es so wie Firefox zu
> machen und stückweise Subsysteme neu zu implementieren.

Das bestreitet niemand. Nicht einmal der Typ im Video.

In einem Pony-Wunderland würde ich auch gerne mit dem Finger schnippen 
und alles in Rust neuschreiben.

Aber das ist halt gar nicht das Thema. Das Thema war: Wie bringe ich 
moderne Eigenschaften von modernen Sprachen in C++ rein.
Deine Antwort "nutze halt moderne Sprachen" ist in diesem Kontext Unfug.

Eines der größten Probleme mit C++ ist, dass es nicht mit Altlasten 
aufräumen kann. C++ ist eine stinkende Müllhalde an legacy-Features, auf 
die oben drauf schön säuberlich leckere Früchte drapiert werden. Das ist 
der zentrale Punkt im Video. Das führt zwangsläufig dazu, dass neuer 
Schrottcode entwickelt wird, obwohl das verhinderbar wäre.
Diesen Fakt kann man nicht einfach überbügeln mit: "Ja dann nutze halt 
Rust".

Es muss dringend ein Umdenken passieren.
Neue Software muss möglichst in neuen sicheren Sprachen entwickelt 
werden.
Und bestehende Software muss Altlasten abwerfen.
#7279608
Lesenswert?

cppbert schrieb:
> ja das Herb Sutter Beispiel ist ja nur ein Aufrüttler - was wäre wenn
> C++ sowas wie die Rust Editions hätte - was wäre möglich - Herb muss ja
> immer der am-weitesten-über-den-Tellerrand-schauer sein

Das wurde als 'Epochs' bereits von Vittorio Romero vorgeschlagen und 
soweit ich mich erinnern kann mit großer Mehrheit vom Komitee abgelehnt.
Gast #7279629
Lesenswert?

Jörg W. schrieb:
> Eben deshalb halte ich das für keine sonderlich zielführende Idee, da
> noch weiter dran herum zu ändern. C++ hat sowieso schon eine Unmenge an
> Veränderungen in den letzten Jahrzehnten erfahren, dass da kaum einer
> noch durchblickt.

Du scheinst das Video wirklich nicht geguckt oder verstanden zu haben.
Anders ist das kaum zu erklären.
Gast #7279793
Lesenswert?

Nein. Global ist das keine Verschlechterung, sondern eine Verbesserung.

Und auch lokal ist es eine Verbesserung, wenn man in der Realität lebt, 
wo man eben eine riesige Codebasis hat, die niemand auf eine 
inkompatible Sprache umziehen wird.
Das sind nun einmal Realitäten, mit denen wir leben müssen. Da ändert 
auch ein "Anreiz zur Migration" nichts dran.

Im Ponyland. Ja. Dort wäre Cpp2 eine Verschlechterung.
Ich lebe dort aber nicht.
Gast #7279825
Lesenswert?

Jörg W. schrieb:
> Es geht ja nicht um "umziehen" (vor allem nicht sofort)

Ja doch. Genau darum geht es.
Es geht darum bestehenden C++-Code mit Cpp2 zu übersetzen und Schritt 
für Schritt zu verbessern, bis man den Cpp2-only-Schalter umlegen kann. 
Die Rückwärtskompatibilität von Cpp2 ist Opt-In. Und dieses Opt-In würde 
man initial geben und Schrittweise zurückfahren.

Ganz ähnlich, wie man das bei der Migration von C zu C++ tun kann. (Wie 
z.B. gcc es getan haben). Der Erste Schritt ist: Keine Codeänderung. Nur 
neuer Compiler.
(Nur, dass es in C->C++-Fall keinen Opt-In-Schalter gibt).

Und das geht eben mit einer inkompatiblen Sprache wie Rust gar nicht.

Guck doch zur Abwechslung einmal das Video.
#7279832
Lesenswert?

MaWin schrieb:
> Ganz ähnlich, wie man das bei der Migration von C zu C++ tun kann. (Wie
> z.B. gcc es getan haben). Der Erste Schritt ist: Keine Codeänderung. Nur
> neuer Compiler.

C ist kein Subset von C++. C++ Leuten, die versuchen C zu schreiben, und 
die Sprache nicht kennen, mag es vielleicht so vor kommen. Aber echte C 
Programmierer kennen die Sprache und nutzen ihr Potential voll aus. 
Einfach einen C++ Compiler nehmen geht da erfahrungsgemäss nur selten. 
Zumindest bei meinem Code geht das eigentlich nie. Da habe ich sowohl 
Sachen, die in C++ gar nicht kompilieren würden, als auch solche, die in 
C wohldefiniert, und in C++ ub sind.
#7279864
Lesenswert?

Cyblord -. schrieb:
> Daniel A. schrieb:
>> C ist kein Subset von C++
>
> Dann lass mal hören welche Teile von C nicht in C++ enthalten sind.

Da gibt es ganz elementare Sachen.

z.B., wenn ich in C "struct bla" schreibe, dann ist nur "struct bla" 
definiert, aber bla nicht. Ich könnte dann sogar zeugs machen, wie 
"typedef int bla;", oder eine variable bla oder Funktion bla nennen, 
usw.

Ein anderes Beispiel sind compound literale. Und bevor du jetzt sagst, 
"C++ hat die jetzt auch", die haben dort zusätzliche Einschränkungen. In 
C spielt es keine rolle, in welcher Reihenfolge ich die Dinger 
initialisiere. In C++ schon.

Ein Klassiger sind auch die Cast regeln. "dingsbums* x = 
(dingsbums*)malloc(sizeof(*x));" ist in C ein absolutes noob no-go. Den 
cast lässt man gefälligst weg.

Ein Beispiel für etwas, das nicht nur anders funktioniert, sondern es 
nur in C gibt: _Generic.

Dann noch ein Beispiel, das in C gut funktioniert, aber in C++ ub ist:
1
#include <stdio.h>
2
#include <string.h>
3
static inline char* hello(char bla[13]){
4
  strcpy(bla, "Hello World!");
5
  return bla;
6
}
7
int main(){
8
  const char* msg = hello((char[16]){0});
9
  puts(msg); // In C ok, da das compound literal im block scope ist. In C++ ub, weil die Lifetime nach dem Funktionsaufruf zuende ist.
10
}

Ich hätte noch mehr Beispiele, aber das dürfte fürs erste mal reichen.
Moderator Persönliche Seite #7279880
Lesenswert?

MaWin schrieb:
> Es geht darum bestehenden C++-Code mit Cpp2 zu übersetzen und Schritt
> für Schritt zu verbessern, bis man den Cpp2-only-Schalter umlegen kann.

Ich habe nur meine Zweifel, dass just diese Organisationen mit riesigen 
C++-Codebasen die nötigen Ressourcen dafür aufzuwenden bereit sind. Denn 
es kostet Ressourcen, das alles durchzugehen. Das sehen wir doch schon 
an so einfachen Beispielen wie Compilerwarnungen über Mischen von signed 
und unsigned. Welches größere Projekt macht sich nachträglich die Mühe 
(die ja insbesondere auch irgendeine Finanzierung benötigt), sowas zu 
reparieren?
Gast #7279885
Lesenswert?

Jörg W. schrieb:
> Ich habe nur meine Zweifel, dass just diese Organisationen mit riesigen
> C++-Codebasen die nötigen Ressourcen dafür aufzuwenden bereit sind. Denn
> es kostet Ressourcen, das alles durchzugehen. Das sehen wir doch schon
> an so einfachen Beispielen wie Compilerwarnungen über Mischen von signed
> und unsigned.

Völlig richtig.
Und dann schlussfolgerst du, dass man stattdessen besser alles in Rust 
neuentwickeln soll?
Das verstehe, wer will.
#7279907
Lesenswert?

Daniel A. schrieb:
> Ich hätte noch mehr Beispiele, aber das dürfte fürs erste mal reichen.

Das ist denk ich der Punkt: Es ist nicht das eine große Feature, das in 
C++ fehlt, sondern viele Feinheiten, die es inkompatibel machen. Man 
muss auch bedenken, dass C++ ursprünglich mal C89 als Basis hatte. 
Inzwischen hat sich auch C weiterentwickelt. Vieles davon wurde in C++ 
auch nachgezogen, aber nicht alles, und auch nicht alles exakt gleich.
Gast #7279920
Lesenswert?

Rolf M. schrieb:
> Das ist denk ich der Punkt

Nein. Der Punkt war, dass das nur ein Beispiel war. Ein Vergleich.
Große Projekte haben diese Migration geschafft.
Auch wenn die µC.net-Experten dies aufgrund der großen Unterschiede als 
praktisch unmöglich ansehen.

Aber das ist nicht schlimm. Denn derzeit sind die Unterschiede zwischen 
Cpp2 und C++ noch genau 0, bei Compat-Opt-In.
Die Situation bei C++->Cpp2 ist also noch besser, als bei C->C++.

Und, nicht vergessen:
Cpp2 ist ein Vorschlag. Eine Idee. Ein Verbesserungsvorschlag zur 
Inkrementellen Verbesserung des C++-Ökosystems.
Es ist nicht: Ein fertiger Compiler. Ein Standard. Ein Zwang. Ein Keks.

Ich finde es ist unbedingt notwendig C++-Altlasten über Bord zu werfen 
und trotzdem rückwärtskompatibel zu bleiben. Und das ist, was Cpp2 
versucht vorzuschlagen und auch praktisch zu demonstrieren.
Und das finde ich gut.
Das ist ein wichtiger Schritt in die Richtung sicherer Sprachen, wie 
z.B. Rust.
Gast #7279932
Lesenswert?

Ein wenig Rust-Soziologie:

https://books.goalkicker.com

Rust: A Language for the Next 40 Years - Carol Nichols
https://www.youtube.com/watch?v=A3AdN7U24iU

https://www.reddit.com/r/rust/comments/jb3ukm/we_need_to_talk_a
bout_stackoverflow/

Richard Feldman — The Next Paradigm Shift in Programming
https://www.youtube.com/watch?v=6YbK8o9rZfI
(besonders spannend: die OO-Anfänge und Ideen. Viele Computer? großes 
Multirechnernetzwerk?)
(Haskell Cabal/Stack, Rust Online - statt komplettes Offline-Packet zum 
Lesen und Arbeiten (auch für DOS) wie bei OpenWatcom.)

https://de.wikipedia.org/wiki/Kognitive_Dissonanz#:~:text=Kognitive%20Dissonanz%20bezeichnet%20in%20der,Einstellungen%2C%20Wünsche%20oder%20Absichten).

Da FP sehr abstrakt ist, braucht es eine ganze Weile bis es rutscht.
Lerntechnisch ist es vielleicht hilfreicher für viele, C++ FP, oder 
JavaScriptFP oder Scala o.ä. zu nutzen.
#7279994
Lesenswert?

MaWin schrieb:
> Rolf M. schrieb:
>> Das ist denk ich der Punkt
>
> Nein. Der Punkt war, dass das nur ein Beispiel war. Ein Vergleich.
> Große Projekte haben diese Migration geschafft.

Natürlich ist die Migration machbar. Alleine schon die Wortwahl 
"Migration geschafft" zeigt aber doch, dass es doch etwas mehr ist als 
das Ersetzen von "gcc" durch "g++" im Makefile. Je nach Projekt kann der 
Aufwand zwischen relativ gering und sehr hoch variieren. Gemacht habe 
ich das auch schon, und dabei habe ich eben gemerkt, dass da der Teufel 
oft im Detail steckt.

> Auch wenn die µC.net-Experten dies aufgrund der großen Unterschiede als
> praktisch unmöglich ansehen.

Das habe ich hier nirgends gelesen.
Gast #7280017
Lesenswert?

Rolf M. schrieb:
> Alleine schon die Wortwahl

Ja, Rolf. Du hast Recht. In allen Punkten.
Ich stimme dir voll und ganz zu. Was du sagst, ist die 100%ige Wahrheit.
Das war lediglich ein Vergleich. Und du hast die Probleme bei diesem 
Vergleich sehr schön dargelegt.

Ist es jetzt gut?
Gast #7281628
Lesenswert?

Mal eine etwas andere Frage.

C Compiler gibt es für 8086 Prozessoren zur genüge, die dann im 16 Bit 
Real Mode laufen und mit <= 640 KiB RAM auskommen.

Wäre das auch mit Rust möglich, wenn man dafür einen Compiler entwickeln 
würde, oder ist dafür die Sprache schon zu komplex?


Ja, man könnte den Code auch auf einer dicken Maschine compilieren, aber 
das ist hier nicht die Frage. Die Frage ist, ob ein Rust Compiler 
machbar wäre, der auf einem altem 8086 PC mit 640 KiB RAM läuft und zwar 
so, dass man nicht ständig auf der Festplatte Daten auslagern muss.
Gast #7281685
Lesenswert?

Jörg W. schrieb:
> Nano schrieb:
>> Die Frage ist,
>
> … was willst du damit?

Ich will einfach nur wissen ob es bei der Komplexität von Rust ginge.
Rust ist immerhin eine sehr moderne Sprache mit so Sachen wie Modulen.
Während man sich bei C und C++ noch um Headerdateien anstatt Modulen 
abmühte. Einer der Gründe warum waren die Systemanforderungen für den 
Compiler.

> Fragt doch auch keiner nach einem C++-Compiler für CP/M. (Selbst
> C-Compiler für CP/M waren eher der Graus.)

Typische CP/M Systeme hatten üblicherweise noch weniger RAM zur 
Verfügung.

> Nicht einmal GCC läuft auf diesem ollen Krempel. DJ-GCC lief nur im
> 32-Bit-Modus eines 80386.

GCC nicht, aber dafür frühe Microsoft C und QuickC Versionen. Sowie 
sicherlich auch Turbo C und noch ein paar andere. Frühe Watcom C 
Versionen eventuell auch noch.
Gast #7281816
Lesenswert?

Nano schrieb:
> Die Frage ist, ob ein Rust Compiler
> machbar wäre, der auf einem altem 8086 PC mit 640 KiB RAM läuft und zwar
> so, dass man nicht ständig auf der Festplatte Daten auslagern muss.

Ziemlich sicher nicht.
Heutige Sprachen sind überhaupt nur möglich, weil genug Rechenleistung 
und Speicher für die Compiler zur Verfügung stehen.

Auch modernes C kann man mit einem modernen optimierenden Compiler nicht 
auf einer 8086 mit 640k RAM compilieren.
Gast #7282072
Lesenswert?

Nano schrieb:
> Ich will einfach nur wissen ob es bei der Komplexität von Rust ginge.
> Rust ist immerhin eine sehr moderne Sprache mit so Sachen wie Modulen.
> Während man sich bei C und C++ noch um Headerdateien anstatt Modulen
> abmühte. Einer der Gründe warum waren die Systemanforderungen für den
> Compiler.

nein sicher nicht - die Analyse braucht einfach zu viel Speicher - aber 
selbst C hat im Vergleich zu damaligen Assemblern schon viel mehr 
Resourcen gebraucht
in den Anfängen von C mussten viele auch sicherliche ständig zwischen 
Disketten und Programmen wechseln um überhaupt was kompiliert zu 
bekommen

aber als Cross-Compiler könnte es gehen - wenn jemand sich darauf 
konzentriert einen Optimizer dafür zu schreiben der dann auch ordentlich 
auf Realmode Segment/Offset Kram optimiert ist

der aktuelle GCC IA 16 (https://github.com/tkchia/gcc-ia16) kann ja auch 
ordentlichen 8086 Code erzeugen und optimiert definitv besser als die 
Kompiler aus der Zeit und läuft sogar auf DOS - aber auch nur mit 
Extender und leider kein C++ :(
Moderator Persönliche Seite #7282175
Lesenswert?

cppbert schrieb:
> aber selbst C hat im Vergleich zu damaligen Assemblern schon viel mehr
> Resourcen gebraucht

Üblich war eine Diskette mit den Tools, eine zweite mit den Dateien 
(Quellcode, Zwischendateien). Dauerte natürlich in der Tat ewig.

Turbo-Pascal wurde seinem Namen dagegen gerecht, im Vergleich zu allen 
anderen Compilern der Zeit war es rasend schnell und brachte noch dazu 
die wohl erste IDE mit, die es gab. Im Vergleich zu heute dürfte die 
Optimierung nicht sonderlich großartig gewesen sein, aber für viele 
Fälle reichte es. Ich habe einen kompletten EPROMMer damit recht 
komfortabel bedient, nur die innere Schleife wurde dann durch 
handoptimierten Inline-Assembler ersetzt.
Gast #7282604
Lesenswert?

cppbert schrieb:
> Nano schrieb:
>> Ich will einfach nur wissen ob es bei der Komplexität von Rust ginge.
>> Rust ist immerhin eine sehr moderne Sprache mit so Sachen wie Modulen.
>> Während man sich bei C und C++ noch um Headerdateien anstatt Modulen
>> abmühte. Einer der Gründe warum waren die Systemanforderungen für den
>> Compiler.
>
> nein sicher nicht - die Analyse braucht einfach zu viel Speicher -

Danke für die Antwort.

> aber
> selbst C hat im Vergleich zu damaligen Assemblern schon viel mehr
> Resourcen gebraucht
> in den Anfängen von C mussten viele auch sicherliche ständig zwischen
> Disketten und Programmen wechseln um überhaupt was kompiliert zu
> bekommen

Ja, das lag Anfangs aber an den Datenträgern. Mit Festplatten fiel das 
Diskette wechseln dann weg.
Bliebe dann nur noch das Auslagern von Daten auf Festplatte während dem 
Compilevorgang von größeren Projekten.
#7282653
Lesenswert?

MaWin schrieb:
> Ziemlich sicher nicht.
> Heutige Sprachen sind überhaupt nur möglich, weil genug Rechenleistung
> und Speicher für die Compiler zur Verfügung stehen.
>
> Auch modernes C kann man mit einem modernen optimierenden Compiler nicht
> auf einer 8086 mit 640k RAM compilieren.

Forth (2012) könnte vielleicht auf 8086 mit 640k RAM  gehen. Auf die 
Schnelle habe ich dazu aber keine Infos gefunden, nur das gforth auf 386 
läuft. https://gforth.org/  Supported systems i386 und Gforth 
EC(embedded) auch auf 8086.

P.S. Das ist zwar off-topic. Aber das waren einige andere Beiträge 
vorher auch. :-)
#7282793
Lesenswert?

Frühe Compiler bestanden aus mehreren Einzelprogrammen, von denen jedes 
einen Teilschritt des Compiliervorgangs durchführte, weil man alles 
zusammen nicht gleichzeitig in den Speicher bekam. Das hat's natürlich 
auch nicht gerade schnell gemacht, weil die Zwischenergebnisse natürlich 
immer erst abgespeichert und dann wieder geladen werden mussten. So sind 
moderne Compiler aber nicht mehr aufgebaut, daher funktionieren die auf 
Systemen mit so begrenzten Ressourcen nicht.
Gast #7282850
Lesenswert?

Rolf M. schrieb:
> So sind moderne Compiler aber nicht mehr aufgebaut, daher funktionieren die auf
> Systemen mit so begrenzten Ressourcen nicht.

Jein. Auch bei den 2 rust compilern gibt es theoretisch noch object 
files. Aber ohne separate include Files mit dem Interface zeugs drinn 
muss der Compiler trotzdem die ganzen abhängigen quellen ansehen, und da 
kann schnell mal alles zusammen hängen. Kommt aber aufs selbe raus, 
finde ich nicht gut. Da können selbst moderate Systeme ganz schön ins 
schwitzen kommen.

Der GCC kann übrigens auch noch pipes zwischen Compiler und Linker 
verwenden. So könnte man also theoretisch kompilieren und linken, ohne 
alles ins Dateisystem zu legen, und ohne alles auf einmal im RAM zu 
haben. Wobei, vermutlich bringt das heute auch nicht mehr viel, falls es 
überhaupt noch funktioniert...
Moderator Persönliche Seite #7283021
Lesenswert?

Wilhelm M. schrieb:
> Das ist beim gcc normal, siehe -save-temps Option.

-save-temps behält sie nur bei, erzeugt werden sie auch sonst.

Aber das dürfte bei heutigen Betriebssystemen und Speichergrößen oft 
keine Rolle mehr spielen, weil die Zwischendateien im Cache bleiben. 
Windows ist allerdings mit vielen Dateioperationen spürbar langsam, und 
wenn man dann noch einen Virenchecker hat, der sich auch noch alle 
Zwischendateien ansehen möchte, dann hat man die Po-Karte gezogen.
Moderator Persönliche Seite #7283061
Lesenswert?

Wilhelm M. schrieb:
> Bei *nix werden temporäre Dateien unter /tmp erzeugt, was typischerweise
> ein tmpfs o.ä. ist

So typisch ist das nicht. Auf den Systemen, wo ich arbeite, ist es ein 
ganz normales Dateisystem (bzw. Bestandteil von /). Trotzdem geht es 
schnell, weil der Krempel noch komplett im RAM verfügbar ist, wenn die 
nächste Phase ihn wieder lesen will. Daher bringt -pipe nicht mehr so 
viel, wie das noch vor 20 Jahren der Fall war.
Gast #7283549
Lesenswert?

Rolf M. schrieb:
> Frühe Compiler bestanden aus mehreren Einzelprogrammen, von denen
> jedes
> einen Teilschritt des Compiliervorgangs durchführte, weil man alles
> zusammen nicht gleichzeitig in den Speicher bekam. Das hat's natürlich
> auch nicht gerade schnell gemacht, weil die Zwischenergebnisse natürlich
> immer erst abgespeichert und dann wieder geladen werden mussten.

Das ist richtig.

Präprozessor
Compiler
Assembler
Linker
und gegebenenfalls noch
EXE2BIN (war Bestandteil von MS-DOS, wurde manchem MS Compiler aber auch 
mitgeliefert)


> So sind
> moderne Compiler aber nicht mehr aufgebaut, daher funktionieren die auf
> Systemen mit so begrenzten Ressourcen nicht.

Das ist korrekt.
Bei LLVM wird sogar Bytecode für eine eigene CPU Maschine erzeugt und 
aus dem Bytecode wird dann erst der eigentliche Maschinencode für die 
Ziel CPU erstellt.

Der Vorteil:
Alle Sprachen generieren den Bytecode und aus diesem einen unified 
Bytecode kann man dann den eigentlichen Maschinencode für die Ziel CPU 
erstellen.
Damit muss man die Arbeit für eine bestimmte Ziel CPU nur einmal machen 
und man kann alle Sprachen für diese nutzen. Umgekehrt gilt das gleiche.
#7283668
Lesenswert?

Nano schrieb:
> Präprozessor
> Compiler
> Assembler
> Linker
> und gegebenenfalls noch
> EXE2BIN (war Bestandteil von MS-DOS, wurde manchem MS Compiler aber auch
> mitgeliefert)

Ich beziehe mich nur auf den Teil "Compiler". Dieser wurde in mehrere 
als getrennte Programme ausgeführte Einzelschritte zerlegt, wie z.B. 
lexikalische Analyse, Syntaxanalyse, Codegenerierung.
Moderator Persönliche Seite #7283698
Lesenswert?

MaWin schrieb:
> Bei Rust gibt es nicht nur einen solchen Zwischenschritt (IR), sondern
> mehrere:

Wobei das jetzt eher ein Implementierungsdetail denn ein Sprachfeature 
sein dürfte, oder? Trifft man außerdem auch bei anderen Sprachen an. 
Lass mal den GCC mit -fdump-rtl-all laufen und erfreu dich dann an 
mehreren Dutzend Dateien, die die einzelnen Zwischenstufen 
repräsentieren. ;-)
Gast #7283736
Lesenswert?

Jörg W. schrieb:
> Wobei das jetzt eher ein Implementierungsdetail denn ein Sprachfeature
> sein dürfte, oder?

Bitte einfach einmal den verlinkten Artikel lesen.

> Trifft man außerdem auch bei anderen Sprachen an.

Ach. Wer hätte es gedacht.
Habe ich ja auch nie in Frage gestellt.

MaWin schrieb:
> Um noch einmal zum Thema des Threads zurück zu kommen:

Also doch wieder off-topic.
"anderen Sprachen"...
Gast #7284013
Lesenswert?

MaWin schrieb:
> Also doch wieder off-topic.
> "anderen Sprachen"...

Was willst du denn immer mit deinem "offtopic"?

Wir sind hier nicht irgendwie Sprachdesigner von Rust, sondern es geht 
darum, welche Zukunft die Programmiersprache und seine 
Bereitstellung/Logistik/Schulung usw. hat.

Beispielsweise, warum kann man Rust nicht einfach wie D auf Windows 
installieren? D braucht nur einen kleinen Ordner, und man kann sofort 
damit arbeiten, ganz easy.
Nicht wirklich schwieriger als eine Tiny C Installation.

Den oben verlinkten Artikel solltest du mal ausdrucken. Wenn man das 
macht, hat man schon einen halben Arztroman zusammen.

Die FP Programmierung muss man (lange) pauken, wenn man nicht irgendwie 
mit Lisp (+ Emacs) groß geworden ist.

Für Haskell braucht man eigentlich nur Notepad oder Papier und 
Bleistift. Aber so richtig gut unter Windows funzt der GHC bzw. die 
Haskell Plattform auch nicht, ziemliches Gewürge bei der Installation, 
und dann auch noch pingelig hinsichtlich der Windows-Version.  - so dass 
man Haskell dann noch lieber auf Linux nutzen möchte.
Bei Rust ganz ähnlich.
Darüber sollten sich diese Rustentwickler mal ein paar Gedanken machen.
D oder Tiny C sind diesbezüglich einfach viel besser, trotz der 
eingeschränkten Ressourcen.

Und: Java? Java ist das abschreckende Beispiel bestimmter Entwicklungen. 
Python ja irgendwie auch - aber da gibt es wohl Wege, damit besser 
klarzukommen.

Und Idris? Was soll ich mit Idris, ich möchte mit Haskell arbeiten. Ach 
sch..
Gast #7284055
Lesenswert?

rbx schrieb:
> Was willst du denn immer mit deinem "offtopic"?

Weil es hier um Rust geht. Nicht um Haskell oder sonstige Sprachen.

Damit ist 90% deines Beitrags wieder einmal off-topic.

> Beispielsweise, warum kann man Rust nicht einfach wie D auf Windows
> installieren?

Du musst ein Exe herunterladen und doppelt draufklicken.
Viel einfacher kann es nicht werden.
Gast #7285759
Lesenswert?

MaWin schrieb:
> Was heißt das auf Deutsch?

Das heißt, dass Tiny C oder D viel einfacher zu installieren sind. 
Einfach downloaden, eventuell noch auspacken, fertisch.

Bei Rust: Warten, ...warten...warten...und wenn dann (so nach 30 Min) 
der Ordner fertig ist, z.B. könnte man diese Buch.exe anklicken und 
dann..

"Dieses Programm kann kann nicht auf Windows ausgeführt werden" - oder 
so ähnlich - typischerweise heißt das: Inkompatibles Windows. (-> 
lächerlich)

(Und groß VS Studio vorher zu installieren, das dauert auch ziemlich 
lange und verbraucht ziemlich viel Speicherplatz. Warum nicht was mit 
mingw?)

Wiederum lächerlich zu Tiny C, D, oder von mir aus auch Hugs. ( 
https://www.heise.de/download/product/hugs-98-40452 )
Hugs verarbeitet übrigens auch (im Gegensatz zum GHC) 
Literate-Programming. Schöne Sache.

( 
https://steamcommunity.com/app/252490/discussions/0/1745646819954096664/ 
)
Gast #7285950
Lesenswert?

MaWin schrieb:
> Und das kann jeder nachprüfen, indem er selbst Rust installiert.
> Also was soll das?

Auch jemand, der Windows 8.1. hat, oder XP oder Me? Das würde mich echt 
mal interessieren.

Wenn hier einer trollt, dann kommt das von einem, der hier Rust 
lobpreist, obwohl noch vieles im Argen ist.
Scheint ja für diesen Typen einfacher zu sein, mehr auf die 
Persönlichkeitseigenschaften zu schließen, wenn dem was nicht passt, als 
tatsächlich mal die Sachlage zu überblicken.

Als ich das erste mal mit Modula 3 Bekannschaft machte, da hieß es, das 
wäre eine TOP-Programmiersprache. Ist die eigentlich auch. Aber die 
Logistik, die Linux-Pflicht, die Unibeschränktheit, die Bibs..
Gast #7286257
Lesenswert?

rbx schrieb:
> Auch jemand, der Windows 8.1. hat, oder XP oder Me? Das würde mich echt
> mal interessieren.

Rust unter Windows 7 habe ich selbst getestet, funktioniert. Und ja, die 
Installation ist nervig wegen dieser GB grossen Abhängigkeiten. Ich 
fürchte, das hat aber auch mit lizenzrechtlichen Dingen zu tun und es 
daher getrennt von MS geladen werden muss.
Gast #7286365
Lesenswert?

Oliver R. schrieb:
> Rust unter Windows 7 habe ich selbst getestet, funktioniert.

Danke für den Hinweis.
32 oder 64 Bit?

Ich habe 64 Bit Windows 8.1. Da lief dann aber nach der Installation 
nichts, also ist der ganze Ordner wieder in den Papierkorb gewandert, 
und der auch gleich geleert worden.
Eventuell war der Nightly Build ein Fehler, möglicherweise funzt stable 
besser, mal sehen.
Gast #7286375
Lesenswert?

Ich habe, angelockt durch diesen Thread her, jetzt einfach mal einen 
Test gemacht.
Ein einfaches Hello World in Rust unter Linux aus dem Tutorial kopiert 
und kompiliert. Das Executable hat knapp 4 Megabyte. Also jetzt mal im 
Ernst, das ist doch ein schlechter Witz, oder?  4 MB für ein Programm, 
das "Hello, World!" auf der Konsole ausgibt? 🤯
Gast #7286379
Lesenswert?

rbx schrieb:
> Danke für den Hinweis.
> 32 oder 64 Bit?

War 64 Bit. Ist allerdings schon eine Weile her und der betreffende 
Rechner steht auch nicht bei mir. Ich würde auch bei stable bleiben 
solange nightly nicht explizit für bestimmten Code benötigt wird. 
Ansonsten verlierst du einen der Hauptvorteile von Rust, nämlich die 
Garantie, dass dein Code in allen zukünftigen (stable) Versionen 
kompilieren wird.
Gast #7286388
Lesenswert?

Gerade getestet, das Hello World im Release Mode ohne Debug Symbole 
belegt unter Linux 289080 Bytes im Dateisystem. Man kann argumentieren, 
dass das immer noch viel ist und es gibt wohl Möglichkeiten da noch 
Platz einzusparen.
Moderator Persönliche Seite #7286396
Lesenswert?

1
$ cat helloworld.rs 
2
fn main() {
3
    // Statements here are executed when the compiled binary is called
4

5
    // Print text to the console
6
    println!("Hello World!");
7
}
8
$ rustc -O helloworld.rs
9
$ ./helloworld
10
Hello World!
11
$ size helloworld
12
    text    data   bss      dec       hex   filename
13
  307914   12864   273   321051   0x4e61b   helloworld
OK, Gegentest:
1
$ cat helloworld.c
2
#include <stdio.h>
3

4
int main(void) {
5
   printf("Hello, world!\n");
6
   return 0;
7
}
8
$ cc -O -o helloworld helloworld.c
9
$ ./helloworld 
10
Hello, world!
11
$ size helloworld
12
  text   data   bss    dec     hex   filename
13
  1839    409     8   2256   0x8d0   helloworld
Gut, etwas kleiner. :-)
1
$ cat helloworld.cc
2
#include <iostream>
3

4
int main(void) {
5
  std::cout << "Hello, world" << std::endl;
6
  return 0;
7
}
8
$ c++ -O -o helloworld helloworld.cc
9
$ ./helloworld 
10
Hello, world
11
$ size helloworld
12
  text   data   bss    dec      hex   filename
13
  4997    649   192   5838   0x16ce   helloworld
Aber so ist das mit Trivialbeispielen, sie sind völlig unrepräsentativ 
für die reale Welt.
Gast #7286427
Lesenswert?

Jörg W. schrieb:
> $ size helloworld
>     text    data   bss      dec       hex   filename
>   307914   12864   273   321051   0x4e61b   helloworld

Okay, das sieht bei mir auch so in der Art aus, mit Abweichungen um 
wenige Bytes. Aber:
1
$ ls -lah
2
total 3,9M
3
drwxrwxr-x 2 user user 4,0K Dez 12 12:23 .
4
drwxrwxr-x 5 user user 4,0K Dez 12 12:22 ..
5
-rwxrwxr-x 1 user user 3,9M Dez 12 12:30 helloworld
6
-rw-rw-r-- 1 user user   45 Dez 12 12:28 helloworld.rs

Ich konnte es nicht aus der VM raus kopieren, eventuelle Tippfehler 
kommen vom Abschreiben. Woran liegt das dann, frage ich mich? Am 
Dateisystem ja wohl eher nicht, wenn der Sourcecode korrekt mit 45 Bytes 
angezeigt wird.

Kompiliert ist es mit "rustc helloworld.rs". Ob das was mit Debug oder 
ohne ist, weiß ich nicht...
#7286433
Lesenswert?

307914 vs 1839.

Damit hat sich die Frage nach Rust für Embedded sowieso bereits 
erledigt. Wie schon vermutet, alles ein Phänomen im PC Bereich. Wo bei 
Speicher und Co. alles egal ist.
Wie soll man mit so einem Footprint C für den Microcontrollerbereich mit 
wenigen MB oder gar kB Flash ablösen? Utopie trifft Wahnvorstellung.
Gast #7286434
Lesenswert?

Ja. Die Größe der Rust-Binaries ist auf dem PC etwas größer als bei C.
Das ist ein bekanntes Problem und daran wurde auch schon gearbeitet.

Es wird jedoch offenbar nicht mit höchster Priorität verfolgt, da das ja 
nicht wirklich ein Problem ist. Ob ein Binary einer großen Applikation 
jetzt ein paar hundert kB größer ist oder nicht, spielt selten eine 
Rolle.

Ich denke echt, dass es da wichtigere Probleme zu lösen gibt.

> Und ja, die
> Installation ist nervig wegen dieser GB grossen Abhängigkeiten.

Ja. Das ist aber nur bei Windows so und der Grund ist Microsoft.
Da ist Rust selbstverständlich auch nicht alleine. So gut wie jede etwas 
größere Applikation braucht diese RT unter Windows.

Da kann Rust nun beim besten Willen nichts für und kann da auch nichts 
dran ändern.
Moderator Persönliche Seite #7286447
Lesenswert?

Nachdenklicher schrieb:
> Woran liegt das dann, frage ich mich?

An allen möglichen weiteren sections im ELF-File, also Symboltabellen 
und Debug-Infos.

Aber das ist doch für die praktische Anwendung komplett irrelevant: 
geladen wird das, was "size" dir anzeigt. Alles andere braucht Platz auf 
der Festplatte, mehr nicht.

Cyblord -. schrieb:
> 307914 vs 1839.

Lässt allerdings komplett außer acht, dass das natürlich hier alles 
dynamisch gelinkte Binaries sind, d.h. ein nicht zu vernachlässigender 
Anteil an Code liegt in den shared libs. Jedoch sind diese natürlich, so 
der Name, eben "shared", d.h. alle Anwendungen nutzen das gemeinsam. 
(Das wäre bei "deeply embedded", also MCUs, anders.)
#7286450
Lesenswert?

Jörg W. schrieb:
> Lässt allerdings komplett außer acht, dass das natürlich hier alles
> dynamisch gelinkte Binaries sind, d.h. ein nicht zu vernachlässigender
> Anteil an Code liegt in den shared libs. Jedoch sind diese natürlich, so
> der Name, eben "shared", d.h. alle Anwendungen nutzen das gemeinsam.
> (Das wäre bei "deeply embedded", also MCUs, anders.)

Und was macht das C Programm hier anders als Rust? Und warum? Das muss 
ja auch auf dem bösen Windows laufen.
Gast #7286457
Lesenswert?

Der Hauptgrund für die Binary-Größe auf Desktop-System ist die 
dazugelinkte Standard-Library. Embedded ist aber typischerweise 
"no-std", d.h. diese Problematik entfällt hier und die Binaries sind 
deutlich kleiner.
Gast #7286460
Lesenswert?

Cyblord -. schrieb:
> Ach so. Gibts denn so ein Beispiel dann auch mal für zwei lauffähige
> Binaries für sagen wie mal nen STM32F103?

Bestimmt. Google wieder kaputt?

Ich habe schon Binaries für AVR8 kompiliert.
Ein Rust-Programm mit leerer main() ist genau so groß wie ein C-Programm 
mit leerer main(). Es enthält dann in beiden Fällen nur die 
avr-libc-Boot- und Basisroutinen.
Moderator Persönliche Seite #7286469
Lesenswert?

Oliver R. schrieb:
> Der Hauptgrund für die Binary-Größe auf Desktop-System ist die
> dazugelinkte Standard-Library.

Leuchtet allerdings dahingehend nicht ein, dass aus einer Library nur 
die Dinge gelinkt werden sollten, die auch tatsächlich benötigt werden.

Es werden wohl eher Dinge wie ein Laufzeitsystem sein, die das 
aufblähen. Da ist dann die Frage, wieviel dieses Overheads eher statisch 
sind (also auch bei großen Programmen annähernd gleich groß bleiben), 
oder ob da was "mitwächst".

Dass ein Helloworld kein sinnvoller Benchmark für die Größe eines 
erzeugten Binaries ist, sollte jedem klar sein.
Gast #7286479
Lesenswert?

Cyblord -. schrieb:
> Warum das? Es gibt immerhin mal eine untere Grenze für die Binary Größe
> an.

Weil es völlig egal ist, ob das 1 kB, 10 kB oder ein paar 100 kB sind, 
seit niemand mehr mit Disketten arbeitet.
Aber so kannst die Rust stdlib gerne dynamisch linken, wenn dich das 
stört.
Es ist halt (noch) nicht die Standardeinstellung, weil das ABI (noch) 
nicht stabil ist.
Moderator Persönliche Seite #7286488
Lesenswert?

Cyblord -. schrieb:
>> Dass ein Helloworld kein sinnvoller Benchmark für die Größe eines
>> erzeugten Binaries ist, sollte jedem klar sein.
>
> Warum das?

Weil es nichts sinnvolles macht.

> Es gibt immerhin mal eine untere Grenze für die Binary Größe an.

Nein, falls da wirklich printf drin ist (meist wird es der Compiler 
rauskicken), dann bläht das auch schon auf. Die untere Grenze wäre
1
int main(void) {
2
  return 0;
3
}

MaWin schrieb:
> Aber sie ist per default statisch gelinkt.

Siehe oben, das allein erklärt das nicht. Auch bei statischem Linken 
wird aus einer Bibliothek nur rausgezogen, was benötigt wird.

Es erscheint mir auch nach all den Beschreibungen über die Features von 
Rust völlig logisch, dass da etwas mehr an Laufzeitsystem dahinter 
steckt. Alle diese Überprüfungen, die nicht schon der Compiler machen 
kann, müssen ja schließlich irgendwo stecken. Das ist bei FORTRAN oder 
Pascal nicht anders.

Komplett statisches Linken von Rust-Binaries scheint aber schon einiges 
an Aufwand zu sein, sonst hätte ich den Vergleich mal probiert. (Das 
zuweilen dokumentierte -C target-feature=+crt-static generiert trotzdem 
noch ein dynamisch gelinktes Binary, weil die Systembibliotheken 
dynamisch bleiben.)
#7286491
Lesenswert?

Jörg W. schrieb:
> Leuchtet allerdings dahingehend nicht ein, dass aus einer Library nur
> die Dinge gelinkt werden sollten, die auch tatsächlich benötigt werden.

Kannst gerne dran arbeiten, wenn es dich so stört.
Die Arbeit wird gerne angenommen.

Tipp: Auf Embedded-Rust ist das natürlich auch genau so, weil dort die 
stdlib im (LTO-)Build direkt mitgebaut wird statt dazugelinkt wird.
Das ist dann tatsächlich noch optimaler, als der C-Ansatz mit 
Link-Elision auf Funktionsbasis.

> Es werden wohl eher Dinge wie ein Laufzeitsystem sein, die das
> aufblähen.

Jörg wieder einmal wild am spekulieren.
Was soll das denn für ein Laufzeitsystem sein?
#7286494
Lesenswert?

Oliver R. schrieb:
> Cyblord -. schrieb:
>> Warum hat ein C Programm unter Windows
>> nicht die gleichen Probleme?
>
> Z.B. weil Rust einen Panic-Handler verwendet, während ein C Programm
> sich im Fall eines Absturzes einfach nur beendet.

Ja und? Will ich jetzt aber nicht haben. Muss ich aber drin haben? 
Super.

Ich stelle mir das schon vor:
"Also Chef, wir brauchen den größeren und teureren Controller, weil Rust 
hat den Panic Handler immer mit drin. Was der bringt? Bei uns gar 
nichts. Ja ist halt trotzdem drin. Ok machen wir das Produkt teuer. Die 
Kunden haben ja auch was davon. Was genau? Äh Ich muss weg."
Moderator Persönliche Seite #7286495
Lesenswert?

MaWin O. schrieb:
> Jörg W. schrieb:
>> Leuchtet allerdings dahingehend nicht ein, dass aus einer Library nur
>> die Dinge gelinkt werden sollten, die auch tatsächlich benötigt werden.
>
> Kannst gerne dran arbeiten, wenn es dich so stört.

Das Verhalten, aus einer Library nur das rauszuziehen, was benötigt 
wird, hat nichts mit der Sprache zu tun, sondern ist eine Eigenschaft 
des Linkers.

> Was soll das denn für ein Laufzeitsystem sein?

Ich dachte, dass du mir das erklären kannst.

Oliver R. hat ja zumindest einen Punkt gebracht, der in diese Richtung 
passt.
Moderator Persönliche Seite #7286507
Lesenswert?

MaWin O. schrieb:
> Cyblord -. schrieb:
>> Ja und? Will ich jetzt aber nicht haben. Muss ich aber drin haben?
>
> Nein.
> Du kannst es soweit reduzieren, dass es nur ein abort()-Aufruf ist.
> Deine Entscheidung.

Dann zeig doch bitte mal, wie diese "deine Entscheidung" praktisch 
aussieht.

Das (primitive) Codebeispiel ist oben. copy&paste einfach mal die 
nötigen Compileroptionen und das Ergebnis (wieder als Ausgabe von 
"size"). Das überzeugt deutlich mehr als eine wortreiche Erklärung "kann 
man doch alles abschalten". Bitte schalte es mal ab.
#7286520
Lesenswert?

Jörg W. schrieb:
> Dann zeig doch bitte mal, wie diese "deine Entscheidung" praktisch
> aussieht.

Ach komm. Ist Google tatsächlich kaputt?
Das ist doch lächerlich.

Ich suche es jetzt garantiert nicht extra für dich raus, aber man muss 
ins Cargo.toml sowas wie panic=abort schreiben. Genauer habe ich es 
jetzt nicht im Kopf.

Cyblord -. schrieb:
> In den meisten Fällen bringt dir das gar nichts. Das Gerät geht halt
> nicht mehr. Egal welche Handler da angesprungen oder nicht angesprungen
> werden.

Genau deshalb schaltet man diesen Handler auf Embedded ja auch ab.
Wo ist eigentlich dein Problem?
#7286522
Lesenswert?

Gibt es bei Rust für Embedded-Architekturen nicht irgendsowas wie 
-ffreestanding? Oder irgendwas um Teile der Laufzeitumgebung nicht 
mitzulinken?

Auf dem PC sind 3Mb Laufzeitgedöns vernachlässigbar (gesetzt dem Fall 
dass es nicht mitwächst und ein 100Mb-Exectuable auch nur 3Mb Bloat drin 
hat).
Embedded sind diese 3Mb natürlich ein NoGo.
#7286526
Lesenswert?

Le X. schrieb:
> Gibt es bei Rust für Embedded-Architekturen nicht irgendsowas wie
> -ffreestanding? Oder irgendwas um Teile der Laufzeitumgebung nicht
> mitzulinken?

Selbstverständlich. Nennt sich

#![no_std]

Wurde natürlich auch schon gesagt.

Le X. schrieb:
> Embedded sind diese 3Mb natürlich ein NoGo.

Gegebene Antworten hier nicht so lesen ist für mich ein NoGo.
Ich wiederhole das jetzt nicht.
#7286527
Lesenswert?

MaWin O. schrieb:

> Ach komm. Ist Google tatsächlich kaputt?
> Das ist doch lächerlich.

Ja, warum muss man ständig deine kruden Behauptungen selber googlen? 
Belege sie selbst oder nehme sie zurück.

> Ich suche es jetzt garantiert nicht extra für dich raus, aber man muss
> ins Cargo.toml sowas wie panic=abort schreiben. Genauer habe ich es
> jetzt nicht im Kopf.

Ja klar. Ist sicher echt trivial.

> Genau deshalb schaltet man diesen Handler auf Embedded ja auch ab.
> Wo ist eigentlich dein Problem?

Dass die Beispiele ständig zeigen dass es nicht brauchbar ist und du 
ständig behauptest man könne das alles auch anders haben, aber den 
Beweis schuldig bleibst und auf google verweist.
Argumentativ noch nackiger kann man sich ja nicht mehr machen als du 
hier gerade.
Gast #7286529
Lesenswert?

Le X. schrieb:
> Gibt es bei Rust für Embedded-Architekturen nicht irgendsowas wie
> -ffreestanding? Oder irgendwas um Teile der Laufzeitumgebung nicht
> mitzulinken?

Das ist bei Rust "no-std", da wird nichts dazugelinkt und auch der Panic 
Handler muss explizit definiert werden.
Moderator Persönliche Seite #7286537
Lesenswert?

MaWin O. schrieb:
> Jörg W. schrieb:
>> Dann zeig doch bitte mal, wie diese "deine Entscheidung" praktisch
>> aussieht.
>
> Ach komm. Ist Google tatsächlich kaputt?

Ich habe auch nicht auf Google verwiesen, sondern Beispiele gezeigt, die 
man per copy&paste nachvollziehen kann.

Aber lass man, helfen oder gar jemanden überzeugen willst du offenbar 
nicht.
Moderator Persönliche Seite #7286559
Lesenswert?

MaWin O. schrieb:
> Ganz gut erkannt.
> Wenn du es nicht nutzen willst - und das willst du ganz offensichtlich
> nicht - dann lasse es halt.

Ich will es derzeit nicht nutzen (weil ich aktuell schlicht keine 
Anwendung für sowas habe). Ich mache aktuell auch bspw. kein C++.

Deshalb stecke ich jetzt auch keinen Aufwand da rein, aber es täte mich 
interessieren, und wenn ich das mal irgendwo gesehen habe, speichere ich 
mir solche Tricks gedanklich ab. Deshalb wäre ich daran interessiert, 
von jemandem, der damit täglich umgeht (und daher schneller ist als 
ich), sowas zu erfahren.

Von dir also offenbar nicht, dann lass es. Ich werde wohl lieber zu 
gegebener Zeit meinen Sohn danach fragen, das dürfte ergiebiger sein als 
so einen Sturkopf wie dich.

Sorry, musste mal raus.
#7286565
Lesenswert?

Jörg W. schrieb:
> Deshalb stecke ich jetzt auch keinen Aufwand da rein

Ja, das merke ich.
Das ist natürlich sehr klug mir den Aufwand aufzubürden und mich die 
Dokumentation durchsuchen zu lassen.
Nur tue ich das nicht.

> Deshalb wäre ich daran interessiert,
> von jemandem, der damit täglich umgeht (und daher schneller ist als
> ich), sowas zu erfahren.

Ich habe dir alle Stichworte geliefert, mit denen du es findest.
Der Rest liegt an dir.

> das dürfte ergiebiger sein als so einen Sturkopf wie dich.

Du bist ein ziemlich unverschämter Mensch, der direkt bockig wird, wenn 
andere Leute nicht nach deiner Pfeife tanzen.

Damit musst du leider leben.
Moderator Persönliche Seite #7286595
Lesenswert?

MaWin O. schrieb:
> Das ist natürlich sehr klug mir den Aufwand aufzubürden und mich die
> Dokumentation durchsuchen zu lassen.

Nun, du hast behauptet, dass du das schon gemacht hast, insofern nahm 
ich an, dass du nicht erst Google bemühen musst. Da lag ich wohl falsch.

Wenn ich ansonsten genauso "bockig" wäre, wie du das behauptest, glaubst 
du, ich würde hier alle nasenlang Leuten bei den Problemen helfen, bei 
denen ich mich gut auskenne?
#7286606
Lesenswert?

Jörg W. schrieb:
> Nun, du hast behauptet, dass du das schon gemacht hast, insofern nahm
> ich an, dass du nicht erst Google bemühen musst.

Richtig. Und ich habe ganz genau beschrieben, was ich gemacht habe und 
was ich noch im Kopf wusste.
Wo ist eigentlich dein Problem?
Statt hier mit mir zu diskutieren, hättest du schon lange "panic=abort" 
in Google eingeben können.
Das wäre vermutlich zu einfach gewesen.
#7286633
Lesenswert?

Moin,

OK, damit kommt dann bei mir, wenn man sich das executable mittels ldd 
anguckt, noch eine weitere shared-lib dazu, die dann halt den Krempel, 
der vorher das binary so aufgeblasen hat, beinhalten wird. Bei so einem 
genialen Namen wie dann hier dafuer verwendet wird, freu' ich mich schon 
arg auf interoperabilitaet.
Achja: Neben den ganzen lustigen, aber scheint's wohl etwas 
platzfressenden Gimmicks von rust wird natuerlich in allen Faellen 
immernoch zusaetzlich die libc gebraucht...
1
ldd hello
2
  linux-vdso.so.1 (0x00007ffe60353000)
3
  libstd-b5176101f2c4a3c2.so => /opt/rustc/lib/libstd-b5176101f2c4a3c2.so (0x00007f9a9bbac000)
4
  libc.so.6 => /usr/lib/libc.so.6 (0x00007f9a9b9aa000)
5
  libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f9a9b990000)
6
  /lib64/ld-linux-x86-64.so.2 (0x00007f9a9bd6a000)

Gruss
WK
#7286645
Lesenswert?

Dergute W. schrieb:
> Bei so einem
> genialen Namen wie dann hier dafuer verwendet wird, freu' ich mich schon
> arg auf interoperabilitaet.

Und deine konkrete Kritik ist jetzt was?

> von rust wird natuerlich in allen Faellen
> immernoch zusaetzlich die libc gebraucht...

Selbstverständlich nicht.
Aber das wurde hier mehrfach erklärt. Auch heute noch einmal. Deshalb 
wiederhole ich das jetzt nicht noch einmal.

Auf einem PC ist die libc halt de-facto die Schnittstelle zum 
Betriebsystem. Auf Windows ganz offiziell und auf Linux praktisch auch. 
Direkte Syscalls macht niemand.
Wenn man kein OS hat, dann braucht man die libc selbstverständlich 
nicht.
(Auf AVR braucht man sie derzeit nur, weil sie noch niemand rausgeworfen 
hat und die paar benötigten Features in Rust neuimplementiert hat.).
#7286646
Lesenswert?

Dergute W. schrieb:
> OK, damit kommt dann bei mir, wenn man sich das executable mittels ldd
> anguckt, noch eine weitere shared-lib dazu, die dann halt den Krempel,
> der vorher das binary so aufgeblasen hat, beinhalten wird.

Das ist bei C++ auch so (und auch bei anderen Sprachen außer C). Nur C 
kommt (fast) nur mit der C-Lib aus.

Alles andere braucht auch die C-Lib, weil das auf den meisten Systemen 
das POSIX-API realisiert. Daher auch bei einem Rust executable.
#7286653
Lesenswert?

Jörg W. schrieb:
> Wilhelm M. schrieb:
>> Und statisch ist Rust und C++ auch wieder vergleichbar.
>
> Hast du denn Rust statisch bekommen? Ich nicht, libc war trotzdem noch
> dynamisch, und das Netz verweist auf MUSL (oder so ähnlich).

Nicht vollständig wie bei C / C++ / ....
Das bezieht sich bei Rust nur auf die Bib von Rust selbst. Aber ich bin 
kein Rust Experte ...

Wenn ich mir ein
1
nm hello

ansehe, dann weiß ich auch, warm das dann so groß ist ;-)
#7286659
Lesenswert?

Moin,

MaWin O. schrieb:
> Dergute W. schrieb:
>> Bei so einem
>> genialen Namen wie dann hier dafuer verwendet wird, freu' ich mich schon
>> arg auf interoperabilitaet.
>
> Und deine konkrete Kritik ist jetzt was?
Keine Kritik - ich schrieb doch: ich freue mich... :-)

> Aber das wurde hier mehrfach erklärt. Auch heute noch einmal. Deshalb
> wiederhole ich das jetzt nicht noch einmal.
Tschuldigung, ich bin da halt etwas begriffstutzig.

> Auf einem PC ist die libc halt de-facto die Schnittstelle zum
> Betriebsystem. Auf Windows ganz offiziell und auf Linux praktisch auch.
> Direkte Syscalls macht niemand.
> Wenn man kein OS hat, dann braucht man die libc selbstverständlich
> nicht.
> (Auf AVR braucht man sie derzeit nur, weil sie noch niemand rausgeworfen
> hat und die paar benötigten Features in Rust neuimplementiert hat.).
Axo. Selbstverstaendlich.
Wie kam ich nur auf das schmale Brett, das bei dem sicheren Rust 
vielleicht auch der ganze "unsichere, in boesem C geschriebene" Unterbau 
durch was eigenes, viel geileres, sichereres ersetzt worden haette sein 
koennen. Von der Groesse der "Rust-Laufzeitumgebung" vielleicht? 
Neeeein, ist sicher nur, weil ich halt so'n bissl langsamer im Denken 
bin.

Gruss
WK
Gast #7286747
Lesenswert?

Cyblord -. schrieb:
> 307914 vs 1839.
>
> Damit hat sich die Frage nach Rust für Embedded sowieso bereits
> erledigt. Wie schon vermutet, alles ein Phänomen im PC Bereich. Wo bei
> Speicher und Co. alles egal ist.
> Wie soll man mit so einem Footprint C für den Microcontrollerbereich mit
> wenigen MB oder gar kB Flash ablösen? Utopie trifft Wahnvorstellung.

das liegt primär daran das Rust die Standardlib statisch linked - auf 
embedded sieht das ganz ganz anders aus

btw: du wolltest noch erklären warum das Iterator-Konzept ein No-go für 
embedded ist, hast du jetzt Zeit gefunden dir das zu überlegen?
#7286783
Lesenswert?

Jörg W. schrieb:
> Naja: dort wird alles statisch gelinkt

Es ist trotzdem ein Unterschied, weil bei Rust Embedded (beim normalen 
Arbeiten mit Cargo) die stdlib nicht vorkompiliert ist. Sie nimmt Teil 
an dem einen Gesamtbuild mit dem einen LTO.

Geht natürlich auch anders, wenn man will, aber sinnvoll ist es allemal 
das Gesamtkonstrukt zu optimieren und dann nichts mehr hinzu zu linken.
Gast #7286785
Lesenswert?

Niemand hat gesagt das Rust und die komplette Tool-Chain 100% ausgereift 
ist, es geht hier (nach meiner Meinung) primär um die Sprache selbst

und wenn die GCC Leute ihr eigenes Frontend bauen sieht es da auch ganz 
anders aus und falls Microsoft dann noch hinterher hüpft mit Rust# (ich 
hoffe nicht) sieht es nochmal anders aus
#7286792
Lesenswert?

cppbert schrieb:
> Niemand hat gesagt das Rust und die komplette Tool-Chain 100% ausgereift
> ist

Das genügt den µC.net-Ansprüchen aber nicht.
Es muss alles perfekt sein. Erst dann kann die bekanntlich perfekte 
Sprache C abgelöst werden.
Da werden keinerlei Kompromisse eingegangen. :)

Außer bei den eigenen Kenntnissen. Da werden Kompromisse eingegangen bis 
hin zur völligen Abwesenheit.

> es geht hier (nach meiner Meinung) primär um die Sprache selbst

Ich finde es schon wichtig auch zu zeigen, dass zum Beispiel das 
Standard-Buildsystem Cargo praktisch allen anderen Buildsystemen 
haushoch überlegen ist.

Es funktioniert einfach sehr gut.
Selbstverständlich liegt das auch daran, dass es perfekt auf Rust und 
seinen Compiler zugeschnitten ist. Das ist klar.

cppbert schrieb:
> und wenn die GCC Leute ihr eigenes Frontend bauen sieht es da auch ganz
> anders aus

Ich denke nicht, dass es ganz anders aussieht.
Aber sicher wird man Aspekte der Sprache finden, über die sich bisher 
formell noch niemand Gedanken gemacht hat und die einfach so sind, weil 
rustc sie so implementiert. Das ist ja bereits so passiert und wird auch 
noch ein paar mal passieren.
Das führt aber dazu, dass die Sprache als Ganzes noch besser wird. 
Deshalb sind sowohl gccrs als auch codegen-gcc ganz wichtige Projekte.
Die Geschichte hat uns gelehrt, dass erst LLVM/clang wieder Leben in die 
damals völlig festgerostete gcc-Entwicklung gebracht hat.
#7286807
Lesenswert?

> Announcing Rust 1.66.0

https://blog.rust-lang.org/2022/12/15/Rust-1.66.0.html

> Explicit discriminants on enums with fields

Ist manchmal ganz nützlich z.B. in Parsern oder Protokollinterpretern.
Jetzt auch mit komplexen enums.

> core::hint::black_box

Könnte nützlich sein für Embedded-Entwicklung.
Da ist tatsächlich oft das "Problem", dass es einem den Code komplett 
wegoptimiert, wenn man ihn nirgendwo verwendet. z.B. wenn man nur mal 
kurz schauen will, zu welchem Assembly ein Stück Code generiert war es 
oft notwendig die Ein- und Ausgaben zu diesem Code irgendwie über 
volatile-Zugriffe zu machen.
Das hier vereinfacht das sicher enorm.

> checked signed+unsigned operations

Das ist tatsächlich sehr nützlich und wird einige Programmteile deutlich 
verkürzen.
Rust verbietet normalerweise Operationen zwischen verschiedenen Typen. 
Deshalb muss man Typen konvertieren und dann natürlich Überlaufprüfungen 
usw. machen. Es gibt aber einige Funktionen, die einige dieser gängigen 
Operationen erleichtern und gleichzeitig safe halten.

> You can now use ..=X ranges in patterns.

Jo das ist gut. Weiß gar nicht, warum das so lange nicht stabil war :)
Gast #7286815
Lesenswert?

MaWin O. schrieb:
> Ich finde es schon wichtig auch zu zeigen, dass zum Beispiel das
> Standard-Buildsystem Cargo praktisch allen anderen Buildsystemen
> haushoch überlegen ist.

das gehört für mich zu der "Sprache" dazu - ist ja auch ein Konzept

Es wird sich zeigen wie die integration in GCC sein wird - nur Rust als 
Sprache oder auch gccrs_cargo als weitere Implementation

ich meinte beim Bezug zum GCC auch nur das dort das Linken usw. 
default-Verhalten nicht unbedingt so sein muss wie beim Referenz-System 
rustc usw.
#7286818
Lesenswert?

cppbert schrieb:
> ich meinte beim Bezug zum GCC auch nur das dort das Linken usw.
> default-Verhalten nicht unbedingt so sein muss wie beim Referenz-System
> rustc usw.

Achso. Ja.
Das Linken hat natürlich gar nichts mit rustc zu tun. Auch heute nicht. 
Das ist wie Cargo die Toolchain bedient. Deshalb denke ich aber schon, 
dass sich das nicht grundsätzlich unterscheiden wird. Jedenfalls nicht 
mehr, als es sich bei gcc vs clang unterscheidet.
Gast #7286834
Lesenswert?

cppbert schrieb:
> Es wird sich zeigen wie die integration in GCC sein wird - nur Rust als
> Sprache oder auch gccrs_cargo als weitere Implementation

cargo dürfte eigentlich nur den Compileraufruf wrappen. Ob das dann 
gcc-rs anstelle von rustc ist, sollte nicht die entscheidende Rolle 
spielen. Flags und Optionen müssen natürlich ggfs. angepasst werden.
Gast #7287040
Lesenswert?

Jörg W. schrieb:
>
1
> ...
2
> $ rustc -O helloworld.rs
3
> ...
4
> $ size helloworld
5
>     text    data   bss      dec       hex   filename
6
>   307914   12864   273   321051   0x4e61b   helloworld
7
>
> OK, Gegentest:
>
1
> ...
2
> $ cc -O -o helloworld helloworld.c
3
> ...
4
> $ size helloworld
5
>   text   data   bss    dec     hex   filename
6
>   1839    409     8   2256   0x8d0   helloworld
7
>
> Gut, etwas kleiner. :-)
>
1
> ...
2
> $ c++ -O -o helloworld helloworld.cc
3
> ...
4
> $ size helloworld
5
>   text   data   bss    dec      hex   filename
6
>   4997    649   192   5838   0x16ce   helloworld
7
>
> Aber so ist das mit Trivialbeispielen, sie sind völlig unrepräsentativ
> für die reale Welt.

C ist immer noch total fett, wenn man es mit Assembler vergleicht.

Hier bei mir braucht ein einfaches "Hello World!" in Rust 297208 Bytes.

Meine Version in Assembler unter DOS braucht 87 Bytes.

Gut, das ist ein 16 Bit REAL MODE Programm, aber meine 64 Bit Rust 
Version und deine C und C++ Binaries sind immer noch um ein Vielfaches 
größer.

Das OS ist ein anderes und es sind 64 Bit Binaries, aber selbst wenn man 
bedenkt, dass die Binaries nicht statisch gelinkt sind und das printf 
von libc in der libc auch noch Platz braucht, ist das ziemlich viel 
Platz, was da benötigt wird.

Die NASM Version unter Linux braucht mit nur 50 Bytes sogar noch weniger 
Bytes. Das könnte allerdings am SYSCALL liegen, d.h. der Kernel macht 
hier mehr und weil die Segmente wegfallen.
Angehängte Dateien:
Gast #7287054
Lesenswert?

MaWin schrieb:
> Cyblord -. schrieb:
>> Warum das? Es gibt immerhin mal eine untere Grenze für die Binary Größe
>> an.
>
> Weil es völlig egal ist, ob das 1 kB, 10 kB oder ein paar 100 kB sind,
> seit niemand mehr mit Disketten arbeitet.

Wenn das komplette Programm in den L1 Cache der CPU passt, macht das 
schon etwas aus, wenn es performancekritisch ist.

Der Intel Tiger Lake hat nur einen L1 Cache von 48 KiB für Daten und 32 
KiB für Befehle. Da sind 100 KiB schon zu groß.
#7287057
Lesenswert?

Nano schrieb:
> Wenn das komplette Programm in den L1 Cache der CPU passt, macht das
> schon etwas aus, wenn es performancekritisch ist.

Wer kennt sie nicht, die performancekritischen Hello-World-Programme.

Außerdem: Lies mal nach, was Dateigröße, Sectiongröße und RAM-Belegung 
unterscheidet.
Es ist nicht mehr DOS.

Du fragst: Wo soll ich das lesen? Wo soll ich mich weiterbilden?
Die Antwort wird dich total überraschen: Hier im Thread! Heute!
Gast #7287062
Lesenswert?

MaWin O. schrieb:
> Nano schrieb:
>> Wenn das komplette Programm in den L1 Cache der CPU passt, macht das
>> schon etwas aus, wenn es performancekritisch ist.
>
> Wer kennt sie nicht, die performancekritischen Hello-World-Programme.

Mein Supergirl hat nunmal hohe Ansprüche an eine schnelle 
Bildschirmausgabe.

>
> Außerdem: Lies mal nach, was Dateigröße, Sectiongröße und RAM-Belegung
> unterscheidet.

Nö, das weiß ich. Wenn du das binary strippst, dann unterscheidet sich 
die ls Ausgabe nicht mehr groß von size.

> Du fragst: Wo soll ich das lesen? Wo soll ich mich weiterbilden?

Ich habe gar nichts derartiges gefragt.
Gast #7287078
Lesenswert?

MaWin O. schrieb:
> Nano schrieb:
>> Nö, das weiß ich. Wenn du das binary strippst, dann unterscheidet sich
>> die ls Ausgabe nicht mehr groß von size.
>
> Besser doch noch einmal hier nachlesen und sich weiterbilden.

Wie ich bereits sagte, muss ich das nicht, da ich das schon weiß.

Dein Problem ist, dass du Fakten nicht als gegeben hinnehmen willst. 
Wenn jemand Fakten liefert, dann greifst du die Person persönlich an. 
Such dir also mal einen Psychologen.
#7287082
Lesenswert?

Nano schrieb:
> Wie ich bereits sagte, muss ich das nicht, da ich das schon weiß.

Anscheinend ja nicht.

> Dein Problem ist, dass du Fakten nicht als gegeben hinnehmen willst.
> Wenn jemand Fakten liefert, dann greifst du die Person persönlich an.

Bitte einmal ein vollständiges Zitat liefern, wo ich das getan habe. Und 
zwar nicht als Reaktion auf einen vorhergehenden persönlichen Angriff 
(wie heute von unserem Herrn Moderator).
Danke.
Gast #7287094
Lesenswert?

MaWin O. schrieb:
> Nano schrieb:
>> Wie ich bereits sagte, muss ich das nicht, da ich das schon weiß.
>
> Anscheinend ja nicht.
>
>> Dein Problem ist, dass du Fakten nicht als gegeben hinnehmen willst.
>> Wenn jemand Fakten liefert, dann greifst du die Person persönlich an.
>
> Bitte einmal ein vollständiges Zitat liefern, wo ich das getan habe. Und
> zwar nicht als Reaktion auf einen vorhergehenden persönlichen Angriff

Hier Z.B.
> Anscheinend ja nicht.

Du unterstellst mir Dinge, die 1. nicht stimmen und 2. obwohl du keine 
Ahnung über mich hast und 3. es völlig am Thema vorbei geht, ich scheine 
dir wohl wichtig zu sein.

Dich stört der Fakt, dass Assemblerprogramme kleiner sind als C oder 
Rust Programme. Denn mehr als eine wertfreie Aussage dazu inkl. 
Lieferung eines Beweises habe ich nicht gesagt. Das könnte man jetzt als 
so gegeben hinnehmen und fertig.
Aber du kochst rot vor Wut, weil ich es gewagt habe, das einfach mal 
wertfrei und objektiv an das schwarze Brett zu hängen, damit es jeder 
lesen kann. Sprich, du hast Komplexe und noch ganz andere Probleme, komm 
mal klar.
Gast #7287099
Lesenswert?

Noch eine Ergänzung als Auflösung für dich.

Ich habe ls anstatt size benutzt, weil es beim strippen relativ egal ist 
und ich ls aus reiner Gewohnheit verwende und es ausreichend gut ist.
Und meine Screenshots sind älter, als mein Lesen des Kommentars von 
Jörg, der dich darauf hingewiesen hat, dass man size zum messen 
verwenden soll:
Beitrag "Re: Rust - ist das hier um zu bleiben?"

Und jetzt nörgelst du daran herum, weil du streiten willst. Siehe dazu 
mein vorheriges Kommentar, ich kann mich da nur wiederholen, komm mal 
klar.
#7287110
Lesenswert?

Nano schrieb:
>> Anscheinend ja nicht.
> Du unterstellst mir Dinge

Du solltest einmal nachschlagen, was das Wort "anscheinend" bedeutet.

> Dich stört der Fakt, dass Assemblerprogramme kleiner sind als C oder
> Rust Programme.

Völliger Unsinn.

> Das könnte man jetzt als so gegeben hinnehmen und fertig.

Und warum tust du das dann nicht?

> Aber du kochst rot vor Wut

Ach? Habe ich gar nicht gemerkt.

> das einfach mal
> wertfrei und objektiv an das schwarze Brett zu hängen

Und für meine Antwort auf deinen Beitrag gelten diese Grundsätze nicht?

> Sprich, du hast Komplexe und noch ganz andere Probleme, komm
> mal klar.

Hm ja. Danke, Herr Psychologe, der auch sagt:

Nano schrieb:
> dann greifst du die Person persönlich an.

Aber du scheinst mich ja ziemlich gut zu kennen, denn

> Und jetzt nörgelst du daran herum, weil du streiten willst.

Du scheinst ein sehr angenehmer Zeitgenosse zu sein.
Gast #7287208
Lesenswert?

@Nano

MaWin hat es lediglich versäumt dir zu erklären das dein Assembler 
Beispiel dank Syscall nutzung völlig sinnfrei ist um irgendwelche 
Größenvergleiche zu betreiben - spätestens bei DOS geschwurbel wurde 
klar das es dir irgendwie nur darum geht ein wenig Technik zu schnattern

und jetzt hört bitte auf euch anzuzicken
Gast #7287425
Lesenswert?

cppbert schrieb:
> und dann landet das auch auch schön in cygwin oder mingw, msys2 und rbx
> ist gleich wieder froh :)

Naja, nicht nur ich..
https://stackoverflow.com/questions/55603111/unable-to-compile-rust-hello-world-on-windows-linker-link-exe-not-found

Ich hatte bei der Seite mit den "Standalone" Downloads die falschen 
Versionen heruntergeladen und installiert.

("rust-1.65.0-aarch64-pc-windows-msvc.msi")

Jetzt habe ich eine Version heruntergeladen und installiert, die heißt 
"rust-nightly-i686-pc-windows-msvc.msi".

Stunden später..

Installation OK, Pfadeinträge OK, rustc trallalla.rs..

>
>dir
..

trallalla.rs
>

wo ist meine exe??

Wie in Linux: keine Nachricht ist eine gute Nachricht?

Ich frage mich eher: was habe ich jetzt schon wieder falsch gemacht?
Ich würde mich hinsichtlich der möglichen Antworten aber eher nicht auf 
die Persönlichkeitsanalyseprofis MaWin oder cppbert hier verlassen 
wollen.
Gast #7287634
Lesenswert?

rbx schrieb:
> Ich würde mich hinsichtlich der möglichen Antworten aber eher nicht auf
> die Persönlichkeitsanalyseprofis MaWin oder cppbert hier verlassen
> wollen.

Wirklich keine Ahnung was du machst aber ich hab auch von VS2017,19,22, 
MSys2, Clang, Python, zum spielen D und Rust, ... Linux usw. auch 
einfach alles auf meinem Win10, VMWare Linux Systemen drauf - könnte 
sein das ich einfach nur dusel hab weil ich schon so viel installiert 
habe - und  mit den Systemen aber Fulltime jeden Tag arbeite kann es gut 
sein das kleine Probleme mir gar nicht mehr auffallen weil ich eh den 
ganzen Tag durch CMake, make oder sonstige Orgien wühle und relativ 
genau weiss was ich tun muss damit etwas aus/oder mit Code funktioniert
Gast #7287664
Lesenswert?

cppbert schrieb:
> keine Ahnung was deine Probleme sind

Vielleicht Windows 8.1?
Und: hast du die Standaloneversion genutzt?
Haskell Plattform kam auch erst nach einigen Klimmzügen bei der 
Installation auf ME auf den Trichter, die falsche Windowsversion zu 
melden.
Hätte man auch gleich am Anfang machen können.
Aber ich will keine Vorurteile haben.

Version ist rustc 1.68.0-nightly (b70baa4f9 2022-12-14)
rustup geht nicht, kann aber mit der Standaloneversion zu tun haben.
Außerdem habe ich keine Admininstallation, sondern nur eine auf 
Userbasis, was man ja im Installer ausdrücklich einstellen konnte.
Gast #7287677
Lesenswert?

rbx schrieb:
> cppbert schrieb:
>> keine Ahnung was deine Probleme sind
>
> Vielleicht Windows 8.1?
Win10

> Und: hast du die Standaloneversion genutzt?

Nein - die verwende ich nicht - ist nicht prefered und auch nur für die 
welchen eine "richtigen" Installer wollen oder unbedingt offline - ich 
hasse grafische Installer - die sehen schön aus - dahinter ist meist 
Schrott weil keiner Bock hat die zu pflegen - da ist mir jede 
Konsolen-Installation 1000% lieber

https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe

dann

rustup default nightly
Gast #7287700
Lesenswert?

rbx schrieb:
> Außerdem habe ich keine Admininstallation, sondern nur eine auf
> Userbasis, was man ja im Installer ausdrücklich einstellen konnte.

ich hab auch keine Admininstallation - sowas macht auch wirklich niemand 
mehr der nicht ein bisschen verrückt ist
#7287704
Lesenswert?

cppbert schrieb:
> rbx schrieb:
>> Außerdem habe ich keine Admininstallation, sondern nur eine auf
>> Userbasis, was man ja im Installer ausdrücklich einstellen konnte.
>
> ich hab auch keine Admininstallation - sowas macht auch wirklich niemand
> mehr der nicht ein bisschen verrückt ist

Das ist halt auch so ein 1990er Einstellung.
Auch für dich hat XKCD was auf Lager.
https://xkcd.com/1200/
Angehängte Dateien:
Gast #7287707
Lesenswert?

rbx schrieb:
> Ich frage mich eher: was habe ich jetzt schon wieder falsch gemacht?

Ja. Das fragen wir uns alle.
Normale Leute klicken auf rustup-init.exe, installieren die stable 
Variante (Warum zum Henker installierst du nightly?), und zack schon hat 
man ein voll funktionsfähiges Rust + Cargo.
Ich habe echt nicht die geringste Ahnung, was du da veranstaltest.
Gast #7287721
Lesenswert?

Cyblord -. schrieb:
> MaWin schrieb:
>> Cyblord -. schrieb:
>>> Auch für dich hat XKCD was auf Lager.
>>
>> Das widerspricht ja gar nicht cppbert's Aussage. Ist dir das nicht
>> selbst aufgefallen?
>
> Nein ist es nicht. Weil es genau passt.

aber

> Auch für dich hat XKCD was auf Lager.
> https://xkcd.com/1200/

klingt so als hätte ich jemands Admin-Installationen befürwortet :)
#7287731
Lesenswert?

cppbert schrieb:
>> Auch für dich hat XKCD was auf Lager.
>> https://xkcd.com/1200/
>
> klingt so als hätte ich jemands Admin-Installationen befürwortet :)

Kann es sein dass du das XKCD nicht verstanden hast? Es spricht sich FÜR 
Admininstallationen aus. Weil eine eingeschränkte User-Installation 
heute nicht mehr viel bringt, weil alles wichtige heute online passiert 
und nicht in den tiefen des OS.
Moderator Persönliche Seite #7287746
Lesenswert?

MaWin schrieb:
> Niemand testet Rust auf einem Betriebssystem, dessen Support ausgelaufen
> ist

Rust ist seiner Zeit voraus? ;-)

"Windows 8.1 Support endet am 10. Januar 2023"

https://support.microsoft.com/de-de/windows/windows-8-1-support-endet-am-10-januar-2023-3cfd4cde-f611-496a-8057-923fba401e93

Also aktuell ist es noch supportet … (wenn auch nur gerade noch so).
Gast #7287748
Lesenswert?

Cyblord -. schrieb:
> Weil eine eingeschränkte User-Installation
> heute nicht mehr viel bringt

völliger Quatsch - nur schlechte miese Software benötigt das - es gibt 
aber viele die seit UAC anfängen alles nur noch als Admin installieren - 
aus Gewohnheit - ich mache gar keine Admin-Installationen - maximal 
läuft das VStudio mal kurzfristig als Admin damit der Intel-VTune an die 
Hardware-Counter kommt - aber nur so lange Performanz-Tests laufen

ohne Grund eine Admin-Installation zu machen ist völlig hirnlos
#7287751
Lesenswert?

cppbert schrieb:
> Cyblord -. schrieb:
>> Weil eine eingeschränkte User-Installation
>> heute nicht mehr viel bringt
>
> völliger Quatsch - nur schlechte miese Software benötigt das
Darum geht es gar nicht.

> - es gibt
> aber viele die seit UAC anfängen alles nur noch als Admin installieren -
> aus Gewohnheit - ich mache gar keine Admin-Installationen - maximal
> läuft das VStudio mal kurzfristig als Admin damit der Intel-VTune an die
> Hardware-Counter kommt - aber nur so lange Performanz-Tests laufen
>
> ohne Grund eine Admin-Installation zu machen ist völlig hirnlos

Und das sieht halt XKCD anders. Und es wird ja auch begründet. Mehr sage 
ich ja nicht.
Du hingegen kannst bisher nicht begründen was die eingeschränkten Rechte 
bringen sollen.
Gast #7287753
Lesenswert?

Cyblord -. schrieb:
> Du hingegen kannst bisher nicht begründen was die eingeschränkten Rechte
> bringen sollen.

Mehr Sicherheit, weniger Konflikte zwischen Applikationen wenn manche 
anfangen teilweise mit Adminrechten Dateien usw. zu erstellen

das ist völliger veralteter Windows-Noob User Style - hauptsache das 
System läuft irgendwie
Gast #7287779
Lesenswert?

Jörg W. schrieb:
> Also aktuell ist es noch supportet … (wenn auch nur gerade noch so).

Ja. War mir klar, das dieser dümmliche Kommentar kommen musste.

https://learn.microsoft.com/de-de/lifecycle/products/windows-81

> Enddatum des Mainstreamsupports:  9. Jan. 2018
> Erweitertes Enddatum:  10. Jan. 2023

Windows 8.x ist tot. Das ist Fakt.
Es zu verwenden ist dumm.
Nun zu jammern, dass Rust darauf eventuell Probleme haben könnte, ist 
noch dümmer.

Niemand interessiert sich für historische Betriebssysteme im 
Rust-Umfeld.
Gast #7287799
Lesenswert?

Jörg W. schrieb:
> Ah ja, die Realität ist "dümmlich".

Nein. Deine Antwort ist dümmlich.
Mir war völlig klar, dass der erweiterte Support erst in ein paar Tagen 
ausläuft.
Für mein Argument spielt das allerdings genau gar keine Rolle. Deshalb 
habe ich es nicht extra erwähnt.

> ich gehe auch nicht davon aus, dass
> seine alte Windows-Version da tatsächlich eine Rolle spielt.

Ja. Ich auch nicht.
Aber ich würde mich auch nicht wundern, wenn es denn so wäre.
Es gibt überhaupt keinen Grund Windows 8 zu verwenden und dann hier die 
Leute mit Problemen zu belästigen.

Rust funktioniert auf Windows 10 und 11 tadellos und ist trivial 
installierbar.
#7287802
Lesenswert?

MaWin schrieb:
> Aber ich würde mich auch nicht wundern, wenn es denn so wäre.
> Es gibt überhaupt keinen Grund Windows 8 zu verwenden und dann hier die
> Leute mit Problemen zu belästigen.
>
> Rust funktioniert auf Windows 10 und 11 tadellos und ist trivial
> installierbar.

Also ich sehe starke parallelen in der Argumentation und im 
Sozialverhalten zwischen Rust-Anhängern und Linux-Anhängern. Frappierend 
möchte man sagen.
Gast #7287900
Lesenswert?

Ich denke mal, in Linux lässt sich Rust viel unproblematischer und 
schneller installieren.
Theoretisch bräuchte man in die Konsole nur schreiben rustc

Die Automagie geht soweit, dass die sich dann praktisch um den Rest 
kümmert, hinsichtlich der notwendigen Installation.

Ähnlich schnell und unproblematisch kann man die OpenWatcom Sachen auf 
Windows installieren.
Sowas würde man sich auch für Rust wünschen - wenn das denn so eine 
tolle C-Ablösung sein soll.
Gast #7288003
Lesenswert?

rbx schrieb:
> Ich denke mal, in Linux lässt sich Rust viel unproblematischer und
> schneller installieren.
> Theoretisch bräuchte man in die Konsole nur schreiben rustc

Ich habe unter Linux und Windows in ca. 70sek installiert, sehr auch 
irgendwas 8.1 nicht mehr Supporter sein soll

rbx schrieb:
> Ähnlich schnell und unproblematisch kann man die OpenWatcom Sachen auf
> Windows installieren.
> Sowas würde man sich auch für Rust wünschen - wenn das denn so eine
> tolle C-Ablösung sein soll.

Für OpenWatcom brauch ich ca. 30sek

Ist aber alles relativ bis absolut egal weil man 99% der Zeit Code 
schreibt und nicht aus Langeweile staendig Compiler installiert
#7288033
Lesenswert?

Jörg W. schrieb:
> Naja, ehrlich, wer will sich heutzutage noch mit dem
> abscheulichen "real mode" eine 8086 herumschlagen?

Ich, aber ich mache auch 8080/Z80.
Da nehme ich natürlich kein Rust für.

> Ansonsten kann ich mir nicht vorstellen, dass das soooo
> Windows-untauglich ist, [...]

Naja, Firefox hat die Unterstützung für Windows 9x/ME eingestellt, bevor 
sie Rust integriert haben... und selbst wenn da Rust-Code drin ist, dann 
muss der noch lange nicht nennenswert mit der WinAPI zusammenarbeiten.

Vollwertige Anwendungen in einer Sprache schreiben ist nochmal was 
anderes als Bibliotheken.
Moderator Persönliche Seite #7288107
Lesenswert?

MaWin schrieb:
> Only Windows 10 currently undergoes automated testing.

Keine automatischen Tests bedeutet aber noch lange nicht, dass es 
deshalb gleich nicht mehr funktionieren soll.

Python hatte wohl kürzlich bei ihren Binärversionen Support für Windows 
7 eingestellt (d.h. es lässt sich da auch wirklich nicht mehr 
installieren), aber 8.1 ist selbst bei denen noch in der Tüte.
Gast #7288127
Lesenswert?

MaWin schrieb:
> Es geht hier um Rust und alles im Rust-Lieferumfang

Leicht daneben, es geht um die Zukunft von Rust, und Daniel ist nicht 
der einzige, der in diese Richtung fragt.
Und wenn man Zukunftsfragen stellt, dann ist es nicht verkehrt, in die 
Vergangenheit zu schauen, oder nach ähnlichen Fällen.

Unabhängig davon:
FreeDOS Project: Then and Now [Kielux 2017]
- https://www.youtube.com/watch?v=w6NswAAKmbU
42 Minuten

Bryan Lunduke war sich nicht zu schade, ein Interview mit Jim Hall zu 
machen.
(Auf der Suche nach Antworten, warum Linux so schwach verbreitet ist, 
warum Linux so Spielunfreundlich ist usw. usw.)

highlights from linux sucks 2022 by bryan lunduke

https://www.youtube.com/watch?v=MRKtybzB3ig
3:35

https://reactos.org/forum/viewtopic.php?t=18215
----------------------

Man sollte schon festhalten, dass die Rustanhänger ein wenig ein auf 
Woke machen, andere Meinungen dissen, und dass das neu ist. Das 
Gegenseitige runtermachen ist nicht neu, das ist flamewar, es ist eher 
die beobachtbare kognitive Dissonanz bei den Rust-Freunden.

Und wenn man die FP analog als Steinzeit betrachtet, dann ist Haskell 
darin Ägypten.
Der bewährte Weg ist vom Bekannten zum Unbekannten. An vielen Stellen 
gesehen.
Aber von Lisp kennt man auch: Dialektmanie, viel schlimmer noch als 
Basic. Praktisch jeden Freitag ein neuer Lisp Dialekt.

Das war bei C immer weniger schlimm. Noch dazu gibt es didaktisch krasse 
Bücher, wie das vom Erlenkötter. So ganz unscheinbar wird einem die 
Programmierung einer Game-Engine beigebracht..
Bei K+R lernt man gleich am Anfang, wie man Verschlüsselungen knackt, 
sowas fanden viele spannend.
Gast #7288131
Lesenswert?

Jörg W. schrieb:
> Keine automatischen Tests bedeutet aber noch lange nicht, dass es
> deshalb gleich nicht mehr funktionieren soll.

Was ja auch niemand behauptet hat.

rbx schrieb:
> FreeDOS Project

Bitte on-topic bleiben. Danke.

> Man sollte schon festhalten, dass die Rustanhänger ein wenig ein auf
> Woke machen

Ja. Genau.

> Steinzeit

Ja.

> Ägypten

Genau das.
Moderator #7288161
Lesenswert?

Jörg W. schrieb:
> rbx schrieb:
>> die Rustanhänger
>
> Soso. Wie viele kennst du denn so, dass du für "die Rustanhänger"
> sprechen kannst?

Mindestens einen davon kennt jeder, der diesen Thread liest. Was wäre,
mal rein hypothetisch betrachtet, wenn dieser eine repräsentativ für die
meisten anderen in seiner Gilde wäre? ;-)

SCNR
Moderator Persönliche Seite #7288169
Lesenswert?

Yalu X. schrieb:
> Mindestens einen davon kennt jeder, der diesen Thread liest.

Naja, genau genommen, kenne ich allein aus dem Thread bereits zwei. Nur 
einer davon tritt, nennen wir es mal, derart "offensiv" auf.

Da ich aber privat noch weiter Leute kenne, die das gern nutzen, trau' 
ich mir durchaus die Aussage zu, dass man von diesem einen allein 
keineswegs auf alle schließen kann.
Gast #7288206
Lesenswert?

Jörg W. schrieb:
> dass man von diesem einen allein
> keineswegs auf alle schließen kann.

Mache ich auch nicht. Auffällig waren die Kommentare in einem 
reddit-thread (s.o.).
Und in dem ungekürzten Bryan Lunduke Video wird auch ein kleiner Witz 
über Rust Programmierer gemacht - in dem Comic-Bild in der 3 Min 
Zusammenfassung bei 2:38 zu sehen. Was er weiter meint, ist sowas wie: 
jetzt sind wir endlich Perl losgeworden..
Das kommt ja auch nicht von ungefähr, und so "riecht" man schon so ein 
wenig Sektenhaftigkeit, Gleichschaltung, VT-Zuschreibung usw.
Gast #7288266
Lesenswert?

Es ist völlig unrelevant für die Qualitäten einer Sprache oder 
Betriebsystem wie sich dessen subjektiv wahrgenommene Community verhält, 
kein erfahrener Entwickler lässt sich davon in irgendeiner Form 
beeinflussen

Jede Community hat ihre gemäßigten, toxischen, fanatischen und Prediger, 
aber Einzelpersonen sind ohne Projekt oder Team dahinter unrelevant, sie 
sprechen nie für eine Gruppe sondern immer nur für sich selbst und das 
ist ok, erst wenn sich Leute öffentlich treffen und gemeinsam diese 
subjektiv erfahrenen Werte teilen wird es schwierig und so leid es mir 
tut habe ich solche Konflikte nie erlebt wenn ich auf C/C++, 
Linux,Windows oder sonstige Veranstaltungen war kein Evangelismus, keine 
Abgrenzung, offene Gespräche und immer nur viel Interesse

Die Welt ist voll mit Menschen die Neuerungen ausprobieren wollen, egal 
zu welchem Zweck und den Konservativen die denken das nur aus Stillstand 
und Reife etwas besseres entstehen kann, beides braucht man

Es ist nur eine Sache die deutlich zu erkennen ist, es gibt wenige 
professionelle, also hauptberufliche Entwickler mit breiter Erfahrung 
die sich an solchen Diskussionen aktiv beteiligen, der Anteil an Hobby 
Entwicklern die das nur als Zeitvertreib machen ist viel höher und 
leider kann dieser Teil der Entwicklergemeinschaft nur recht wenig 
objektives Beitragen weil sie die Welt nur aus einem sehr 
eingeschränkten Blickwinkel sehen, oder eben der andere Teil an 
Entwicklern die in ihrem Bereich recht professionell sind aber leider 
trotzdem nicht verstehen das die guten Konzepte aus ihrer Welt nur 
beschränkt in der Systemwelt greifen können oder der harte Kern der 
einfach nur Technikgeschschwafel betreiben will, dem jedes Argument 
irgendwie recht ist und den es oft an Objektivität, Weitblick und 
Erfahrung fehlt

Mir persönlich ist es völlig egal wie MaWin und andere hier (manchmal) 
auftreten, ich filtere die für mich relevanten Infos raus und gut ist 
und ein klein wenig missionieren hab ich mir nach so langer Zeit in der 
C/C++,C#,Python,....,Linux,Windows Entwicklung auch verdient ;)

Sollte es mal ein Forumstreffen geben wird MaWin sicherlich einen 
Vortrag über Rust halten und der grosse Rest hier wird ihm zuhören und 
dann vielleicht offen und freundlich diskutieren, aber niemals so 
eigenbrödlerisch wie das teilweise hier statt findet
Gast #7288309
Lesenswert?

Ihr interpretiert da ganz einfach viel zu viel rein.

Was ich hier tue:
- Berichten, wenn es etwas aus meiner sich interessantes Neues zu 
berichten gibt.
- Berichtigen, wenn hier jemand Quatsch labert.

Ich sehe das Problem eher bei denjenigen, die ewig lange mit ja-doch 
"antworten", nachdem sie berichtigt wurden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren