kika: (Default)
[personal profile] kika
Казалось бы, простой критерий, а вот поди ж ты.

Кароче, ищется замена gcc. Интересуют в первую очередь платформы Linux и MacOS/X, но и другие приветствуются. Слава богу, под виндой есть достаточно профессиональный компилятор, и не обязательно пользоваться этой пластмассовой игрушкой.

Кому надо объяснений "почему" - то все очень просто: заебал. Терминально заебал. Настолько что я рад, что мне вряд ли предстоит встретить того волосатого мудилу, который породил это уебище. Иначе я бы точно загремел в тюрьму.

Главное, что если б микрософт так наблевал бы на рынок, то его бы обкладывали хуями в каждом втором мейллисте. А тут - все нормально, все спокойны. Опенсорс же, Free Software Foundation, свобода, равенство, братство и процветание.

Date: 2008-10-29 07:12 am (UTC)
From: [identity profile] calcin.livejournal.com
Ссылочку, пожалуйста, на тот набор багов, который заебал.
Интересно же.

Date: 2008-10-29 08:09 am (UTC)
From: [identity profile] kika.livejournal.com
А без ссылочки заебать не может? Не вел я списка, хотя после каждого раза думал: "ну все теперь, пора список составлять".
В этот раз 4 часа ушло на (упрощено, но не сильно)

FILE *bar::foo(char *path, error *err)
{
FILE *f;

if(!make_abs_path(path))
return FS_INVALID_HANDLE;
....
f = fopen(m_abs_path, m_mode);
if(FS_OK(f))
*err = FS_NO_ERROR;
else
*err = FS_ERROR;
}

Date: 2008-10-29 10:37 am (UTC)
From: [identity profile] cmm.livejournal.com
ну, это.
человеческих C++-компиляторов в природе не бывает, потому как невозможно.
а C gcc компилирует вполне себе нормально.

Date: 2008-10-29 07:46 pm (UTC)
From: [identity profile] kika.livejournal.com
С чистым C несколько месяцев назад была ровно та же самая ошибка. Тоже стоила чуть ли не целый рабочий день в сумме.

Date: 2008-10-29 08:35 pm (UTC)
From: [identity profile] cmm.livejournal.com
однако!
при Столлмане gcc такого себе не позволял.

Date: 2008-10-30 12:30 am (UTC)
From: [identity profile] pzz.livejournal.com
В Си они это дело починили где-то в районе четверки. Наверное, в пятерке починят в C++ :-)

Date: 2008-10-29 11:25 am (UTC)
From: [identity profile] rblaze.livejournal.com
А для идиотов -- что было не так?

Код странный, ошибку возвращает то через return value, то через параметр. Но вроде без криминала.

Date: 2008-10-29 07:42 pm (UTC)
From: [identity profile] kika.livejournal.com
Ты вообще на С-то программируешь? Там десяток строк, как можно не увидеть в чем проблема?
Намек: компилятор на этом коде молчит.

Date: 2008-10-29 10:29 pm (UTC)
From: [identity profile] rblaze.livejournal.com
А, значение не возвращается. Ну я ж говорю, странный по дизайну код: двойной возврат ошибки до добра не доводит, с компилятором или без.

Date: 2008-10-29 11:03 pm (UTC)
From: [identity profile] kika.livejournal.com
Двойной возврат ошибки есть везде. Например возврат != 0 и установка errno, здесь функционально тоже самое.
Это не повод вернуть из функции мусор.

Date: 2008-10-30 07:11 am (UTC)
From: [identity profile] rblaze.livejournal.com
Не повод, конечно. Проблему компилятора не отрицаю, но вот именно то, что написано -- это жизнь в поисках неприятностей. Установить err наверху тоже забыли, например, и это уже на компилятор не спишешь.

Date: 2008-10-30 07:17 am (UTC)
From: [identity profile] kika.livejournal.com
Я ж не целиком код привел. Код грязный, я не спорю, человека этого добрым словом уже не раз помянули.

Date: 2008-10-31 01:16 pm (UTC)
From: [identity profile] isysoev.livejournal.com
А -W -Wall не пробовал ? Даже gcc 2.8 на такое говорит:
warning: control reaches end of non-void function

Date: 2008-10-29 09:23 am (UTC)
From: [identity profile] jossik.livejournal.com
intel c++ - ты и сам знаешь ( Вы и сами знаете )

Date: 2008-10-29 09:30 am (UTC)
From: [identity profile] kika.livejournal.com
А у него на юниксе разве фронт-енд не от говна gcc?

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

Date: 2008-10-29 09:49 am (UTC)
From: [identity profile] jossik.livejournal.com
У него фронт-begin от gcc.
То есть эмуляция командных ключей gcc.
А внутри он intel c++ :-)
Но смотри - он тоже не без грешен ...

Date: 2008-10-29 07:44 pm (UTC)
From: [identity profile] kika.livejournal.com
А мне безгрешность и не нужна. Мне нужно чтобы ошибки исправляли и не срали на потребителей.

Date: 2008-10-30 07:45 pm (UTC)
From: [identity profile] krotoff.livejournal.com
У него front-end от edg.

Был по крайней мере, в те времена, когда у меня интересовало у кого какой front end :D

Date: 2008-10-29 12:48 pm (UTC)
From: [identity profile] arkanoid.livejournal.com
На линуксе - Sun Studio? но вот что с этим делать на маке - понятия не имею. Там была кучка традиционных тулзов для разработки, но они в свою очередь не пойдут на линуксе.

Date: 2008-10-29 07:45 pm (UTC)
From: [identity profile] kika.livejournal.com
Какие такие традиционные тулзы на маке? Там тот же самый сраный gcc. Собственно проблема и всплыла именно на маке, линуксовая версия у нас недоделанная и ее никто не тестирует.

Date: 2008-10-29 07:58 pm (UTC)
From: [identity profile] arkanoid.livejournal.com
Ба, да я все проспал. Я думал, там все так и живут с CodeWarriror'ом, а он уже три года как discontinued ;-)))

Date: 2008-10-30 12:45 am (UTC)
From: [identity profile] pzz.livejournal.com
С другой стороны, gcc нашел в этой программе хорошо спрятанный buffer overflow - сколько бы мы с ним промудохались, если бы он сам вылез, никому не известно.

Так что пока счет 1:1

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

Date: 2008-10-30 05:30 am (UTC)
From: [identity profile] kika.livejournal.com
Так что пока счет 1:1

Buffer overflow он нашел один, а пропустил серьезных ошибок три или четыре. Какой тут 1:1, ты апчом? Был бы 1, я бы и не возникал, с кем не случается.

где gcc применяют коммерчески - это всякого рода ембедщина

Сформулируй мысль точнее:
1. Под линукс, обычный, не встроенный в холодильник, (почти) не бывает коммерческой разработки
2. Под линуксом народ для коммерческой разработки пользуется не гцц
3. All of the above.

Date: 2008-10-30 10:20 am (UTC)
From: [identity profile] pzz.livejournal.com
Ошибаешься, он два раза нашел overflow (примерно в одном и том же месте, но это было два разных случая) и два раза же пропустил отсутствие return'а из функции, возвращающий значение.

Остальные пропущеные ошибки, это скорее не ошибки, а расширения, типа возможносити объявить переменную с Сишном коде по-плюсовому, в удобном месте, а не в начале блока. В силу своей тривиальности они особых хлопот не доставили.

Абаснуй :D

Date: 2008-10-31 11:14 am (UTC)
From: [identity profile] krotoff.livejournal.com
1. Под линукс очень много коммерческих разработок. Есть даже коммерческие (sic) линуксы. (В смысле линуксы за деньги).

2. gcc используется во-всю. Не столько потому, что так хорош, а больше потому что родной/знакомый. Да и выбор компиляторов в наше упадочное время не ахти как богат.

Profile

kika: (Default)
kika

January 2017

S M T W T F S
1234567
89 1011121314
151617181920 21
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 15th, 2025 05:46 pm
Powered by Dreamwidth Studios