mboost-dp1

openbsd

OpenBSD og NetBSD importerer en ny compiler

- Via Openbsd journal - , redigeret af Pernicious

OpenBSD og NetBSD har nu valgt at importere Anders Magnussons BSD-licenserede pcc compiler. Hos OpenBSD, hvor mange længe har søgt efter en alternativ compiler i stedet for GCC, har den nye compiler fået en plads i CVS, og i NetBSD har man fået en pkg import. Dog lader det ikke til, at det er muligt for de 2 BSD projekter helt at droppe GCC endnu, da der stadig er nogle mangler i pcc compileren.

Der er tale om en kraftig omskrevet version af pcc compileren. 50 % af frontend-koden er omskrevet og 80 % af backend-koden er også omskrevet.

Anders Magnusson skrev på NetBSD’s tech-toolchain mailinge liste

It is not yet bug-free, but it can compile the i386 userspace. The big benefit of it (apart from that it’s BSD licensed, for license geeks 🙂 is that it is fast, 5-10 times faster than gcc, while still producing reasonable code. The only optimization added so far is a multiple-register-class graph-coloring register allocator, which may be one of the best register allocators today. Conversion to SSA format is also implemented, but not yet the phi function. Not too difficult though, after that strength reduction is high on the list.





Gå til bund
Gravatar #1 - the_zoro
17. sep. 2007 04:49
Der er et springende spørgsmål der trænger sig på: Hvorfor?
Nogen forklaringer? er det pga BSD licensen? (og at gcc er GPL-ish?)
Gravatar #2 - Mr.Weasel
17. sep. 2007 06:15
For OpenBSD er det bl.a. licensen, men det handler også om at OpenBSD udviklerne ikke er vildt tilfredse med den måde GCC udvikler sig på.

GCC ses som bloated, langsom og rodet, PCC skulle i følge OpenBSD være omkring 4 gange hurtigere. Et andet problem har været at GCC i de nyere version har droppet support for en del hardware arkitekturer, som OpenBSD stadig understøtter, som det er nu understøtter PCC kun x86, men fordi det er BSD tror jeg de regner med at de bedre selv kan vedligeholde det. Det kunne de naturligvis også med GCC, men OpenBSDs udgave af GCC indeholder en længere række patches, som GNU folkene ikke har ønsket at importere, og BSD udviklerne vil ikke forke et GNU program, fordi de ikke er enige i licensen og derfor ikke gider slæbe rundt på den. Det er i hvert fald sådan ca. min forståelse.
Gravatar #3 - DR KOBALL
17. sep. 2007 06:37
#1 #2,
Jeg synes nu også hastigheden har en del at sige.
Hvis jeg kunne skære 80 % af compile time væk så ville jeg da være en glad trold :-D
Det tror jeg faktisk mange ville være
Gravatar #4 - madmoose
17. sep. 2007 06:40
#3,
Også hvis det betyder at dit program kommer til at køre røv langsomt?
Gravatar #5 - sKIDROw
17. sep. 2007 06:59
Det lyder nu som en kollosal opgave, de har sat sig for der.
Men okay GCC blev jo udviklet fra bunden, så det kan jo lade sig gøre.
Gravatar #6 - madmoose
17. sep. 2007 07:40
LLVM er meget mere spændende: http://llvm.org/
Gravatar #7 - The_Real
17. sep. 2007 07:46
#4
Korrekt, GCC har en masse optimeringsmuligheder, problemet med mange af dem er bare at de er buggy af H til. Jeg personligt har arbejdet med projekter, hvor man var nød til at slå optimeringen fra på visse steder i koden, da GCC formåede at "optimere" det så meget, at projektet ikke kunne køre.
Det er et meget kendt problem at GCC er buggy, og hvis du kigger rundt i koden på mange open source projekter, vil du nok se nogle sure kommenterer hist og her, om workarounds for at få det til at virke når det er compilet med GCC (ikke mindst forskellige versioner).
Derved ikke sagt, at en ny compiler ikke kan have lignende problemer, men håbet er nok fra Open/NetBSDs side, at de kan have lidt mere indflydelse over denne compiler, og koden er en smule mere overskuelig end GCC (den har trods alt mange år bag sig), så sådanne problemer er nemmere at identificere og rette.
Gravatar #8 - flywheel
17. sep. 2007 09:03
Ja det lyder som en stor opgave - men på den anden side kan de indføre en del optimeringer og omstruktureringer, da de ikke skal tage hensyn til portabiliteten og alsidigheden.
Gravatar #9 - madmoose
17. sep. 2007 09:12
#7,
Generelt har VC nu givet mig flere problemer med fejlkompileringer end GCC har, men det er selvfølgelig bare en personlig anekdote.

Bl.a. havde jeg et busy-loop (ja, grimt, det ved jeg) som VC syntes den kunne optimere til at være en uendelig løkke...

Noget i retning af:

bool done;
do {
is_opengl_done(&done);
} while (!done);


Det var en sjov fejl. Den næste udgave at VC fiksede det dog, svjh.

#8,
Så vidt jeg ved er et af målene med (flere af) BSDerne lige netop alsidighed og portabilitet, right?
Gravatar #10 - flywheel
17. sep. 2007 09:52
#9 GNU Compiler Collection er blandt andet problematisk fordi at portabilitet er et af de primære designparametre, ikke bare i forhold til software- og hardware-platform men også i forhold til programmeringssprog - derfor er den også modulariseret.

Dette er en ren C/C++ compiler, der får hjem på et begrænset antal softwareplatforme, nemlig BSD-familien. Men ja NETBSD kan blive et mareridt i dette henseende.
Gravatar #11 - arne_v
18. sep. 2007 01:55
Skal vi lige lave et lille realitets check ?

Det grundliggende compiler design er fra 1973.

Der er ingen binutils - de vil forsøge at bygge på nogle binutils fra PDP-10 (og så snakker vi altså igen rigtigt gamle dage).

Det er kun C. Ingen C++.

Ingen Ada, ingen Java, ingen Pascal, ingen Fortran.

Der arbejdes dog på Fortran 77 (som jo så også er 2 versioner bagefter).

Og så vidt jeg kan læse mig til så er det:
- næsten en non optimizing compiler
- uden runtime library
- x86 only

Jeg har lidt svært ved at se, hvad der er her som enhver datalogi studerende der har taget compiler teknik ikke kunne lave i et speciale.

Der må være smidt hundredevis måske tusindevis af mandår i GCC siden udviklingen af pcc stoppede.

Jeg har lidt svært ved at se hvorfor man tror, at man sådan uden videre kan indhente det.

Et par links:
http://www.ludd.ltu.se/~ragge/pcc/
http://undeadly.org/cgi?action=article&sid=200...
http://developers.slashdot.org/article.pl?sid=07/0...

PS: Ifølge wikipedia så er kilden til at pcc kan erstatte GCC netop den "superpålidelige" kilde Slashdot.
Gravatar #12 - arne_v
18. sep. 2007 01:56
Med hensyn til kvaliteten af GCC, så er der trods alt temmelig meget software på temmeligt mange platforme som bygges med GCC.

Så helt håbløst kan det dog ikke være.

Hvis teamet er for ikke-responsivt, så er det måske tid til at genoplive EGCS.
Gravatar #13 - sKIDROw
19. sep. 2007 06:20
#12

Eller selv blive en aktiv del af GCC projektet, hvilket altid bør være den vej man forsøger først. Forking er aldrig helt ukontroversielt.
Gravatar #14 - arne_v
19. sep. 2007 13:50
#13

Nu var EGCS ikke en "split fork" men en "løb foran fork".
Gravatar #15 - sKIDROw
20. sep. 2007 19:45
Det ændrer sådan set ikke noget, forking er noget der skal undgås der hvor man overhovedet kan.

Forks som egcs skaber splid, og dårlig stemning i communityet.

Nogen gange kan det ikke undgås, men man bør altid prøve.
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login