LINUX.ORG.RU

Вышел PCC 1.0

 , , , ,


0

0

Проект Portable C Compiler ставит своей целью создание альтернативы компилятору GCC для языка C под лицензией BSD. Проект берёт начало от оригинального компилятора C, использовавшегося в UNIX в семидесятые - восьмидесятые годы прошлого века. Компилятор отличают:

  • полная поддержка стандарта C99;
  • малый размер (640 КБ в архиве) и простой код;
  • быстрая компиляция.

Заявлена работа в ОС Linux, *BSD, Windows, Mac OS X, Solaris. Поддерживаются платформы i386 и amd64, другие платформы — ограниченно.

Генерируемый код, в большинстве случаев, сравним по эффективности с кодом, производимым GCC. На данный момент компилятор собирает FreeBSD, NetBSD и ядро OpenBSD.

Некоммерческая огранизация BSD Fund, спонсор проекта, объявляет конкурс по успешной сборке ядра Linux при помощи PCC. Также в их планах фронтенды для языков Fortran (почти готов) и C++.

Архитектура PCC (на английском)

Объявление о релизе

>>> Домашняя страница

★★★★

Проверено: anonymous_incognito ()
Последнее исправление: Dendy (всего исправлений: 3)

Больше некро-компиляторов хороших и разных! :)

Andru ★★★★
()

пусть будет.

компиляторов много не бывает.

Ubuntu1104
()
% cd /usr/src/ && make cleandir && make CC=/usr/local/bin/pcc WITHOUT_GROFF=1 WITHOUT_CLANG=1 WITHOUT_TOOLCHAIN=1 WITHOUT_BOOT=1 WITHOUT_NS_CACHING=1 buildworld
...
/usr/src/lib/libmagic/../../contrib/file/print.c:
===> usr.sbin/sysinstall (obj,build-tools)
===> gnu/usr.bin/cc/cc_tools (obj,depend,all)
warning: structure `VEC_cp_token_position_heap' used but not defined
warning: structure `c_arg_info' used but not defined
warning: structure `c_switch' used but not defined
warning: structure `et_node' used but not defined
warning: structure `loop' used but not defined
warning: structure `ipa_reference_vars_info_d' used but not defined
warning: structure `reg_info_def' used but not defined
warning: structure `value_set' used but not defined
warning: structure `VEC_cp_token_position_heap' used but not defined
warning: structure `c_arg_info' used but not defined
warning: structure `c_switch' used but not defined
warning: structure `et_node' used but not defined
warning: structure `loop' used but not defined
warning: structure `ipa_reference_vars_info_d' used but not defined
warning: structure `reg_info_def' used but not defined
warning: structure `value_set' used but not defined
/usr/src/gnu/usr.bin/cc/cc_tools/../../../../contrib/gcc/real.h, line 74: array size cannot be negative
*** Error code 1

Stop in /usr/src/gnu/usr.bin/cc/cc_tools.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
% uname -rsm
FreeBSD 8.2-STABLE amd64
iZEN ★★★★★
()
Ответ на: комментарий от iZEN

GNU такой GNU, что у них размер массива может принимать отрицательные значения даже в мирное время. :)) (А может уже идёт тихая война?)

iZEN ★★★★★
()
Ответ на: комментарий от hizel

Тоже не собирается:

% cd /usr/src/ && make cleandir && make CC=/usr/local/bin/pcc WITHOUT_GROFF=1 WITHOUT_CLANG=1 WITHOUT_TOOLCHAIN=1 WITHOUT_BOOT=1 WITHOUT_NS_CACHING=1 buildkernel
...
--------------------------------------------------------------
>>> stage 2.3: build tools
--------------------------------------------------------------

--------------------------------------------------------------
>>> stage 3.1: making dependencies
--------------------------------------------------------------
./aicasm: 880 instructions used
./aicasm: 826 instructions used
./opt_global.h: Assembler messages:
./opt_global.h:5: Warning: line numbers must be positive; line number 0 rejected
/usr/src/sys/dev/sym/sym_hipd.c:141: error: "Not supported platform"

/usr/src/sys/fs/devfs/devfs_vnops.c:827: error: out of macro space!
/usr/src/sys/kern/kern_cpu.c:1037: error: out of macro space!
/usr/src/sys/net/if.c:1256: error: out of macro space!
/usr/src/sys/dev/atkbdc/atkbdc.c:182: error: "define tag!"

/usr/src/sys/x86/isa/clock.c:43: error: cannot find 'opt_apic.h'
/usr/src/sys/x86/x86/mca.c:38: error: cannot find 'opt_apic.h'
/usr/src/sys/x86/x86/nexus.c:47: error: cannot find 'opt_apic.h'
mkdep: compile failed
*** Error code 1

Stop in /usr/obj/usr/src/sys/SELENA.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
% uname -rsm
FreeBSD 8.2-STABLE amd64
% pcc -v
pcc 1.0.0.RELEASE 20110221 for amd64-portbld-freebsd8.2, igor@selena.fire
no input files

Пример сборки, вообще-то, для FreeBSD 9-CURRENT (в которой уже LLVM/Clang вместо GCC?).

iZEN ★★★★★
()
Ответ на: комментарий от iZEN

Там static assert, вероятно, посмотри код.

unsigned ★★★★
() автор топика
Ответ на: комментарий от iZEN

> GNU такой GNU, что у них размер массива может принимать отрицательные значения даже в мирное время. :)) (А может уже идёт тихая война?)

Да, идет. Криворукие мэйнтейнеры портов FreeBSD против GCC.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Какие порты? Ты о чём? «Stop in /usr/src/gnu/usr.bin/cc/cc_tools» — это GNU'сный тулз в исходниках системы.

iZEN ★★★★★
()

WTF?

На исходниках FreeBSD 9-CURRENT:

% cd /usr/src/ && make CC=/usr/local/bin/pcc WITHOUT_GROFF=1 WITHOUT_CLANG=1 WITHOUT_TOOLCHAIN=1 WITHOUT_BOOT=1 WITHOUT_NS_CACHING=1
===> share/info (all)
===> lib (all)
===> lib/csu/amd64 (all)
===> lib/libc (all)
/usr/src/lib/libc/gen/__getosreldate.c, line 58: AT_OSRELDATE undefined
*** Error code 1

Stop in /usr/src/lib/libc.
*** Error code 1

Stop in /usr/src/lib.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
% cd /usr/src/ && make CC=/usr/local/bin/pcc WITHOUT_GROFF=1 WITHOUT_CLANG=1 WITHOUT_TOOLCHAIN=1 WITHOUT_BOOT=1 WITHOUT_NS_CACHING=1 buildworld
--------------------------------------------------------------
[quote][quote][quote] World build started on Fri Apr  8 20:00:55 VOLST 2011[br][/quote][/quote][/quote]--------------------------------------------------------------

--------------------------------------------------------------
[quote][quote][quote] Rebuilding the temporary build tree[br][/quote][/quote][/quote]--------------------------------------------------------------

--------------------------------------------------------------
[quote][quote][quote] stage 1.1: legacy release compatibility shims[br][/quote][/quote][/quote]--------------------------------------------------------------
===> tools/build (obj,includes,depend,all,install)

--------------------------------------------------------------
[quote][quote][quote] stage 1.2: bootstrap tools[br][/quote][/quote][/quote]--------------------------------------------------------------
===> cddl/usr.bin/sgsmsg (obj,depend,all,install)
===> cddl/lib/libctf (obj,depend,all,install)
/usr/src/cddl/lib/libctf/../../../sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h:596: error: "ISA not supported"

/usr/src/cddl/lib/libctf/../../../sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h:596: error: "ISA not supported"

/usr/src/cddl/lib/libctf/../../../sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h:596: error: "ISA not supported"

/usr/src/cddl/lib/libctf/../../../sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h:596: error: "ISA not supported"

/usr/src/cddl/lib/libctf/../../../sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h:596: error: "ISA not supported"

/usr/src/cddl/lib/libctf/../../../sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h:596: error: "ISA not supported"

/usr/src/cddl/lib/libctf/../../../sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h:596: error: "ISA not supported"

/usr/src/cddl/lib/libctf/../../../sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h:596: error: "ISA not supported"

/usr/src/cddl/lib/libctf/../../../sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h:596: error: "ISA not supported"

/usr/src/cddl/lib/libctf/../../../sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h:596: error: "ISA not supported"

/usr/src/cddl/lib/libctf/../../../sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h:596: error: "ISA not supported"

mkdep: compile failed
*** Error code 1

Stop in /usr/src/cddl/lib/libctf.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
% cd /usr/src/ && make CC=/usr/local/bin/pcc WITHOUT_GROFF=1 WITHOUT_CLANG=1 WITHOUT_TOOLCHAIN=1 WITHOUT_BOOT=1 WITHOUT_NS_CACHING=1 KERNCONF=GENERIC buildkernel
...
--------------------------------------------------------------
[quote][quote][quote] stage 2.3: build tools[br][/quote][/quote][/quote]--------------------------------------------------------------

--------------------------------------------------------------
[quote][quote][quote] stage 3.1: making dependencies[br][/quote][/quote][/quote]--------------------------------------------------------------
./aicasm: 880 instructions used
./aicasm: 826 instructions used
./opt_global.h: Assembler messages:
./opt_global.h:9: Warning: line numbers must be positive; line number 0 rejected
/usr/src/sys/dev/acpica/acpi_hpet.c:35: error: cannot find 'opt_apic.h'
/usr/src/sys/dev/bxe/bxe_self_test.h:160: error: out of macro space!
/usr/src/sys/dev/sym/sym_hipd.c:141: error: "Not supported platform"

/usr/src/sys/fs/devfs/devfs_vnops.c:888: error: out of macro space!
/usr/src/sys/kern/kern_cpu.c:1037: error: out of macro space!
/usr/src/sys/kern/subr_smp.c:199: error: wrong arg count
/usr/src/sys/net/if.c:1225: error: out of macro space!
/usr/src/sys/dev/atkbdc/atkbdc.c:184: error: "define tag!"

/usr/src/sys/x86/x86/mca.c:38: error: cannot find 'opt_apic.h'
/usr/src/sys/x86/x86/nexus.c:47: error: cannot find 'opt_apic.h'
mkdep: compile failed
*** Error code 1

Stop in /usr/obj/usr/src/sys/GENERIC.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
ЧЯДНТ?

P.S.

make.conf и src.conf перед компиляцией удалил.

iZEN ★★★★★
()
Ответ на: WTF? от iZEN

Ничего, скорее всего просто некоторые архитектурно зависимые макросы PCC не объявляет.

BlackV
()
Ответ на: комментарий от IT-specialist

>> Вышел pcc 1.0

Потенциальный срачь. pcc vs gcc, BSD vs Linux.

Да, и зОбан.



А по теме??? Походу сказать нечего? меняй ник.

anonymous
()

>Вышел pcc 1.0

собирает FreeBSD, NetBSD и ядро OpenBSD.

На кофеварке быстрее будет работать?

DuratarskeyK
()
Ответ на: комментарий от iZEN

Говоришь, словно не знаешь о феноменальном качестве гнутых исходников.

tensai_cirno ★★★★★
()
Ответ на: комментарий от anonymous

> А по теме??? Походу сказать нечего? меняй ник.
Пользуюсь gcc. А pcc RIP, как и BSD.

IT-specialist
()

Смысл в LLVM я как бы ещё вижу и он вроде под BSD - тогда зачем PCC который по сути тот ещё мамонт как и gcc (только gcc уже перепилили вдоль и поперёк)

stalkerg ★★★★★
()
Ответ на: комментарий от stalkerg

> зачем PCC

Простой и легкий для аудита.

который по сути тот ещё мамонт как и gcc

PCC значительно старше.

tailgunner ★★★★★
()
Ответ на: комментарий от iZEN

> GNU такой GNU, что у них размер массива может принимать отрицательные значения даже в мирное время. :)) (А может уже идёт тихая война?)

Сколько по вашему будет тут:
unsigned char c = -1;

andreyu ★★★★★
()
Ответ на: комментарий от IT-specialist

>Потенциальный срачь. pcc vs gcc, BSD vs Linux.

Ну и BSDL vs GPL, как же без него.

Ttt ☆☆☆☆☆
()

Как насчёт имевшегося в PCC кода Кальдеры? Переписали? Забыли? Забили? Только нового иска SCO не хватало.

question4 ★★★★★
()

>Некоммерческая огранизация BSD Fund, спонсор проекта, объявляет конкурс по успешной сборке ядра Linux при помощи pcc.

Вот чего им неймется? Почесать больше нечего?

Хороший учебный компилятор. Простой, быстрая сборка. Нет, надо все испортить продакшеном...

AVL2 ★★★★★
()
Ответ на: велосипед от madcore

Ставить одного монстра взамену другому, когда надо просто скомпилять три самописанные строчки? Ха-ха.

anonymous
()
Ответ на: комментарий от stalkerg

LLVM — не компилятор. Это компилятор компиляторов. И применять его можно много где.

tensai_cirno ★★★★★
()
Ответ на: комментарий от anonymous

>Ставить одного монстра взамену другому, когда надо просто скомпилять три самописанные строчки? Ха-ха.

три самописанные строчки


Это так обласканы вёдра FreeBSD, NetBSD и OpenBSD? Лорчую.

madcore ★★★★★
()

> Проект Portable C Compiler ставит своей целью создание под лицензией

BSD альтернативы компилятору gcc для языка C.


Я так понял, это для того, чтобы не было даже теоретической возможности потребовать от производителя какого-нибудь девайса исходники компилятора который нужен для сборки бинарников для оного девайса?

Закопать. Немедленно.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

чтобы не было даже теоретической возможности потребовать от производителя какого-нибудь девайса исходники компилятора который нужен для сборки бинарников для оного девайса?


этот бред о необходимости требования вам вживлён вам в мозг Столлманом. второе вживлённое безумие - это то что BSD исходники зажимают. в реальности всё наоборот - серьёзные разработчики заинтересованы в обмене кодом.

разработчики девайса не обязаны поставлять компилятор которым собран бинарник (прошивка устройства - вайфай роутер холодильник сотовый автонавигатор) но вы это не понимаете, и соответственно не будет вам и исходников компилятора.

а GPL - добро. и забудем про двойное лицензирование и палки в колёса пользователям MySQL и Qt. вы считаете что для Qt всё кончилось хорошо, да? а теперяшнии тенденции у Nokia говорят об обратном.

tommy ★★★★★
()

Интересно, сколько ещё BSDL компиляторов C нужно написать, чтоюы DSD-шники успокоились? Кстати, вот и интересная характеристика относительной готовности Linux и BSD для десктопа: в Линуксе плодят плееры с торрент клиентами, а в БЗДе --- всё ещё компиляторы.

Vudod ★★★★★
()
Ответ на: комментарий от tommy

> этот бред о необходимости требования вам вживлён вам в мозг

Столлманом.


Столлман тут совершенно не при чём.

Если Вы считаете бредом желание иметь возможность (которую не обязательно реализовывать, кстати.) полностью распоряжаться железкой, за которую заплачены Ваши деньги - то мне Вас жаль.

Если я купил железо - то я имею право делать с ним всё, что угодно. Оно принадлежит мне. Тот, кто мешает мне это делать, или создаёт возможности ограничения моих возможностей производителем - урод. Точка.

разработчики девайса не обязаны поставлять компилятор которым собран

бинарник



Поставлять c устройством - не обязаны. Но в случае GPL они скорее поделятся своими изменениями, чем в случае BSD. Конечно, было бы лучше, если бы они были обязаны, но пусть лучше хоть GPL, чем никак вообще.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Поставлять c устройством - не обязаны. Но в случае GPL они скорее поделятся своими изменениями, чем в случае BSD


это выдумки. открыла контора изменения GPL кода - другая посмотрела, пропатчила, но уже свои изменения не открыла. почему см выше.

Конечно, было бы лучше, если бы они были обязаны, но пусть лучше хоть GPL, чем никак вообще.


НИКАК! как это НИКАК выползло??? из чего высосано это НИКАК???

tommy ★★★★★
()
Ответ на: комментарий от tommy

>открыла контора изменения GPL кода - другая посмотрела, пропатчила, но уже свои изменения не открыла.

изменения не открыла


если речь идет о GPL, а не о LGPL - закопать другую контору в суде и усё

Pinkbyte ★★★★★
()
Ответ на: комментарий от Vudod

в Линуксе плодят плееры с торрент клиентами

Неверно. Плееры пишутся под абстрактные API и фреймворки, которые успешно портируются на non-gnulinux ОСи.

а в БЗДе --- всё ещё компиляторы.

Неверно. Все перечисленные компиляторы создавались вне проекта BSD, а только затем были портированы либо в базовую систему (GCC, LLVM/Clang), либо в коллекцию портов (GCC, LLVM, PCC и т.д.).

iZEN ★★★★★
()

Велосипед. Если нужен супербыстрый компилятор - можно взять clang и написать для него прямую кодогенерацию без построения AST

annulen ★★★★★
()
Ответ на: комментарий от Vudod

>а в БЗДе --- всё ещё компиляторы

из этой фразы можно было бы сделать вывод, что в линуксе быдло, а в bsd - умные люди

annulen ★★★★★
()
Ответ на: комментарий от annulen

> из этой фразы можно было бы сделать вывод, что линуксом уже пользуется даже быдло, а в bsd - всё еще только «умные» люди

fixed

tailgunner ★★★★★
()
Ответ на: комментарий от annulen

> не пользуется, а разрабатывает

А что, торрент-клиенты и музыкальные/видео-плейеры разрабатывает быдло? Ну чо, слушай музыку компилятором - будь илитой.

tailgunner ★★★★★
()

Прекрасная новость, хоть релиз и был неделю назад.

x4DA ★★★★★
()
Ответ на: комментарий от anonymous

>бздуны — враги опенсорса

анонимус - враг свободы слова

annulen ★★★★★
()

Кто собирал pcc netbsd-CURRENT?

x4DA ★★★★★
()
Ответ на: комментарий от Pinkbyte

если речь идет о GPL, а не о LGPL - закопать другую контору в суде и усё


хватит бредить. не поставляется бинарник - не надо отдавать изменения. контора собирает свою прошивку устройства компилятором со своими патчами и отдавать патчи не обязана. так вот одна по доброй воле отдала, а другая взяла эти патчи а свои не отдала. и это GPL.

tommy ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.