LINUX.ORG.RU
ФорумTalks

Вот я и докатился - 2 (c)

 , ,


0

2

По мотивам: Вот я и докатился

Арчик надо было накатывать лет 15 назад. Как-то время-то упущено теперь. А сейчас самое то — накатывать FreeBSD уже.

В связи с тем, что в GNUтой экосистеме уже практически окончательно закончились программисты.

Хотя мне иногда кажется, что они там и не начинались:

/tmp$ cat 1.c
#include <stdio.h>
#include <stdlib.h>
#include <regex.h>

int main()
{
	printf("size of size_t = %d\n", sizeof(size_t));
	printf("size of regoff_t = %d\n", sizeof(regoff_t));
	return 0;
}
/tmp$ gcc -o xxx 1.c && ./xxx
size of size_t = 8
size of regoff_t = 4
/tmp$

Живите теперь с этим.

wandrien ★★
() автор топика

GNU мертв — спасибо эффективному руководителю — только это не повод переходить на BSD. Linux != GNU/Linux.

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

Во-во. Как BSD’шник говорю что BSD’шная экосистема не менее мразотна чем GNU.

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

Унылая работа на работе за деньги и та ОС с которой ноутбук продали. Или выдали. На работе. Которая за деньги. БСДшники почти все такие, либо уходят на винду\мак наигравшись, либо никуда и не уходили с винды.

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 1)
Ответ на: комментарий от dsl

Угу. На 64-битной системе регэкспы glibc могут работать только со строками не больше 2 ГБ.

Очередная вариация на тему «640 килобайт хватит всем».

Сами себе выстрелили в ногу.

wandrien ★★
() автор топика
Последнее исправление: wandrien (всего исправлений: 1)

А почему закончились? И почему именно гну? Программисты прошлого понаделали косяков, которые сейчас надо расхлёбывать. Но при этом были и закончились. Такое только в гну?

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

Не самый очевидный пример :) Но справедливости ради они могли выбрать regoff_t и в 2 байта. Надо больше - проверяйте и программируйте свои.

dsl
()
Ответ на: комментарий от wandrien
/* Type for byte offsets within the string.  POSIX mandates this.  */
#ifdef _REGEX_LARGE_OFFSETS
/* POSIX 1003.1-2008 requires that regoff_t be at least as wide as
   ptrdiff_t and ssize_t.  We don't know of any hosts where ptrdiff_t
   is wider than ssize_t, so ssize_t is safe.  ptrdiff_t is not
   visible here, so use ssize_t.  */
typedef ssize_t regoff_t;
#else
/* The traditional GNU regex implementation mishandles strings longer
   than INT_MAX.  */
typedef int regoff_t;
#endif

Живите теперь с этим.

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

gcc xxx.c -D_REGEX_LARGE_OFFSETS && ./a.out
size of size_t = 8
size of regoff_t = 8

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

Почему претензии к glibc? Пинайте майнтейнеров своего дистрибутива, может и получится.

Хотя за обработку 2Gb строк регэкспами, нужно гнать такого сотрудника.

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

Почему разрабы глибцы длину объектов в оперативной памяти считают в неподходящем для архитектуры типе данных? Даже не знаю.

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

Возможно условие перевернут, сделают _REGEX_SHORT_OFFSETS, который объявят deprecated. Претензии же фактически к сборочным дефолтам?

imul ★★★★★
()

Пускай тот, кто спроектировал идеальную систему без ошибок первый бросит в Столлмана клавиатуру.

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

Это ABI, ты не можешь просто так поменять сборочный дефолт, не пересобрав весь юзерлэнд и не похерив совместимость с уже существующими бинарными пакетами.

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

Ошибки нужно уметь чинить. А по ссылке типичный нынешний gnu way.

И дело-то не в systemd, а в том, что архитектурного подхода к проблеме нет.

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

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

Тебе потребуется отдельный /lib с полным набором библиотек.

Точно так же как musl ставится в отдельном префиксе. (И по той же причине)

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

Потому что есть стандарты, и очень важно их соблюдать.

Если в условном POSIX *.2025 их изменят, то ваша ненужная претензия решится.

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

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

Что понимается под клиентской библиотекой? Если что-то вроде glib (не glibc), то не вижу проблемы: разные библиотеки могут использовать разные версии символов одновременно.

X512 ★★★★★
()

Чота я не поэл… Ну есть какая то 32 битная переменная, её читаю все кому не лень. Зачем её менять? Заведите ещё одну, 64 битную, пускай хомяки переходят потихоньку

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

Могу, лишусь возможности запускать устаревшие версии со старым abi, но системный дистрибутивный софт тоже пересоберется с новым abi. А для сторонних бинарей придумали всякие снапы и прочее всякое. Или лучше сидеть и ныть, а потом словить очередное «Y2K» и дальше ныть уже с полурабочей системой?

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

И че, где ссылка «скачать ОС»? Спустили на тормозах?

t184256 ★★★★★
()

Просто этот куку засланный казачОк. Это же очевидно. Или просто подкупили. ABI он в 38 году поломать боится, а полностью сломать всё не боится.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от mord0d

Все проблемы Линукса решены

Бгг.))

Разрабы вообще развлекаются по полной.

+  cdiag ("aren't you dumb?");  /* { dg-warning "bare apostrophe ''' in format" } */
+  cdiag ("bitfields suck");    /* { dg-warning "misspelled term 'bitfields' in format; use 'bit-fields' instead" } */
+  cdiag ("invalid bitfield");  /* { dg-warning "misspelled term 'bitfield' in format; use 'bit-field' instead" } */
+  cdiag ("bad builtin function");  /* { dg-warning "misspelled term 'builtin function' in format; use 'built-in function' instead" } */
+  cdiag ("bad builtin function");  /* { dg-warning "misspelled term 'builtin function' in format; use 'built-in function' instead" } */
+  cdiag ("builtin function x");    /* { dg-warning "misspelled term 'builtin function' in format; use 'built-in function' instead" } */
+  cdiag ("builtin functions disabled");    /* { dg-warning "misspelled term 'builtin functions' in format; use 'built-in functions' instead" } */
+  cdiag ("enable builtin functions");      /* { dg-warning "misspelled term 'builtin functions' in format; use 'built-in functions' instead" } */
+  cdiag ("you can't do that"); /* { dg-warning "contraction 'can't' in format" } */
+  cdiag ("you can%'t do that");/* { dg-warning "contraction 'can%'t' in format" } */
+  cdiag ("Can%'t touch this.");/* { dg-warning "contraction 'Can%'t' in format" } */
+  cdiag ("on the commandline");/* { dg-warning "misspelled term 'commandline' in format; use 'command line' instead" } */
+  cdiag ("command line option");/* { dg-warning "misspelled term 'command line option' in format; use 'command-line option' instead" } */
+  cdiag ("it mustn't be");     /* { dg-warning "contraction 'mustn't' in format" } */
+  cdiag ("isn't that silly?"); /* { dg-warning "bare apostrophe ''' in format" } */
wandrien ★★
() автор топика

Как-то время-то упущено теперь.

Попробуй собрать linux-1.3.x или linux-2.0.x. Тряхнуть стариной, так сказать.

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

Не, это не интересные мне версии. Слишком древние. 2.4.x более ламповые.

Я тут развлекаюсь тем, что FreeBSD кросскомпилирую из-под Арча. Но пока чо-т лыжи не едут. Похоже, придётся тулчейн пересобрать с другой версией шланга.

И еще копаюсь в сорцах tinycc. Пытаюсь въехать в гений Белларда.

wandrien ★★
() автор топика

По ссылке смишно. Проблема: если решать проблему, сломается abi функции. Решение: давайте перестанем использовать эту функцию!

Это к вопросу «а зачем нам учить философию, она не пригодится»

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

2.4.x более ламповые.

Самые стабильные были, да.

В то время у меня была классая AU8830.

tinycc

А у меня друзья, кто умел в теорию компиляции, уехали в Редмонд работать. Оттуда обычно приемлимые офферы для «уважаемых россиян» присылали. В России, слышал, где-то в ЮФУ нормальные курсы были по компиляторам - где den73 учился.

i_am_not_ai
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)