LINUX.ORG.RU

Обновилась библиотека uthash

 ,


3

5

Собственно, в обновлении пофиксили баг с xxx_INORDER функциями. Если вы их у себя в коде их не использовали - не стоит беспокоиться, код не рухнет. Но на будущее обновиться имеет смысл.

Код библиотеки uthash на гитхабе:
https://github.com/troydhanson/uthash

Для новости это сильно мало, но библиотека в мире C популярная, поэтому на всякий случай пишу в Development.

★★★★★

Ответ на: комментарий от RazrFalcon

Аналитика уровня ЛОР. На гитхабе куча проектов на расте, которые собираются и не падают.

Ну ох%еть, теперь заживем.

Этим он уже далеко впереди C/C++.

А ты это, общелиспом не увлекаешься? Они тоже уже давно всех перегнали. И у них тоже ничего падает.

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

читать теги, надеюсь, умеете? вот и идите в темы про ржавчину и там друг другу рассказывайте про неё до посинения.

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

Как минимум на фанатика.

Ну это норма для ЛОРа. Иначе было бы слишком скучно.

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

Рано еще говорить, главный флагман Rust servo все такое же падучее говно, а язык за следующие лет 10-15 еще может успеть обрасти фичами и стать таким же монстром как и плюсы, которые изначально были С с классами.

Я критически настроен. Ada, Modula, Cyclone, и прочая, и прочая. Никто массово не будет переходить на Еще-Один-Язык.

Надо протаскивать идеи прямо в спеку Си. Когда фичи будут из коробки на любой платформе с gcc и clang, тогда народ может и зашевелится. Но они даже более строгие правила преобразования типов в присваиваниях протащить не хотят, куда уж до более глобальных идей.

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

Ada, Modula, Cyclone, и прочая, и прочая

Бгг. Всё в кучу.

Надо протаскивать идеи прямо в спеку Си

Это невозможно. Там сидят духовные братья Iron_Bug, которым даже __typeof__ кажется бесполезным.

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

Еще-Один-Язык.

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

anonymous
()
Ответ на: Это всё правильно, но от Deleted

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

Собственно, я такой язык на коленке попиливаю как хобби: с уровнем абстракций не выше си, но с удобными тьюринг-полными макросами

Вы бы лучше либу для Си сделали с такими возможностями вместо своего языка. Тогда все желающие могли бы подключить ее и пользоваться вашими убер-макросами

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

Бгг. Всё в кучу.

Именно. А ты думаешь, для программиста типового среднеарифметического есть разница? Я думаю, что нет. Дай ему на выбор язык А и язык Б - он возьмёт тот, где больше батареек и тредов на SO. Вот и весь выбор.

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

свистелок и перделок

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

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

Вы бы лучше либу для Си сделали с такими возможностями вместо своего языка. Тогда все желающие могли бы подключить ее и пользоваться вашими убер-макросами

Это невозможно сделать как библиотеку, это надо впиливать во фронт-энд языка.

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

Там сидят духовные братья Iron_Bug

Это очень печально, на самом деле. Но всё же неудомеваю, как эти братья засунули в язык комплексные числа и _Bool.

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

не надо это никуда впиливать. потому что язык внутри языка не нужен. есть парсер в компиляторе и язык С обладает тьюринговой полнотой. есть препроцессор. и не надо из препроцессора делать ещё один парсер. потому что это принципиальное ненужно. все возможности есть в самом языке.

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

Не мне вам объяснять, что и у gcc и у LLVM есть все необходимые для этого интерфейсы

Стабильность которых никто не гарантирует.

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

обладает тьюринговой полнотой

Malbolge тоже обладает тьюринговой полнотой. Счастливой отладки.

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

Там сидят духовные братья Iron_Bug, которым даже __typeof__ кажется бесполезным.

и это правильно. они защищают С от дураков и проходимцев, а также от всяких поцтерингов-улучшателей. поэтому в С никогда не будет макак и говнокодеров. просто потому что он для них «слишком сложен». они будут тут плакать, что им вечно чего-то не хватает, что «это сложно», что они прострелили себе яйца и т.д. но нормальным разработчикам в С всего хватает, даже в ANSI, и они пишут код и не жужжат. всё зависит не от языка программирования, а от уровня знаний и опыта программиста.

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

а также от всяких поцтерингов-улучшателей. поэтому в С никогда не будет макак и говнокодеров

Не хочу тебя расстраивать, но «поцтеринг» пишет на си.

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

в С никогда не будет макак и говнокодеров

Хаха, что ты делаешь, прекрати.

PS От них не защищают даже кресты, проверено.

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

Дисциплина - это когда тебе по рукам бить вообще не надо.

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

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

Пофикшено во имя луны и справедливости. Да, у меня есть такой кусок непоймичего, который кто-то наверное даже использует, раз скачивают.

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

Отличная библиотека, рекомендую всем, кого не смущает ~56 байт накладных расходов на один элемент в хеш-таблице (не считая массива бакетов, но это как раз копейки).

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

Да потому что для Си типонезависимые алгоритмы - это боль. Макрособоль.

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

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

Для макак раст как раз таки малопригоден, там думать надо.

Go/Python - скорее уж.

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

Проблема uthash в дизайне, а именно что на каждый чих препроцессор высирает кучу кода (как, например, здесь), что забивает L1i.

Таки а что ви пг'едлагаете?

kawaii_neko ★★★★
()
Ответ на: Это всё правильно, но от Deleted

Собственно, я такой язык на коленке попиливаю как хобби: с уровнем абстракций не выше си, но с удобными тьюринг-полными макросами.

А что тут пилить? Берешь синтаксис LISP, пишешь свой препроцессор, который lisp-синтаксис транслирует в сишечку (обратный транслятор тоже нужен), и готово!

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

static inline позволяет компилятору принять решение. А макросы - нет.

Я не знаю кто ты, но любому вменяемому человеку хватит 5 секунд, чтобы понять, что макросы позволяют запихать себя в тело static inline (и не только!) функции. Более того, если элемент является членом сложной структуры данных, можно прямо в одну функцию напихать кучу макросов а не ловить варнинги unused-funtion.

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

А что тут пилить? Берешь синтаксис LISP, пишешь свой препроцессор, который lisp-синтаксис транслирует в сишечку (обратный транслятор тоже нужен), и готово!

Такую идею я, кстати, как-то давно закидывал на ЛОР. tailgunner её обосрал, но я не помню, за что именно.

Но я извращенец - я сейчас делаю парсер Ada-подобного синтаксиса.

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

Аналитика уровня ЛОР. На гитхабе куча проектов на расте, которые собираются и не падают

...и не делают ничего полезного. Поэтому всем пофигу, падает нинужногавно на расте или нет.

kawaii_neko ★★★★
()
Ответ на: комментарий от i-rinat

Что насчёт Boost.Intrusive?

Вбрось сюда их example и мы дружно посмеемся. Видел раз в жизни мельком и получил такую травму, что до сих пор боюсь вспоминать.

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

кого не смущает ~56 байт накладных расходов на один элемент в хеш-таблице

Как там в 80-х?

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

на шитхабе в основном куча странных кусков непоймичего на %any-lang% которые ничего не делают, потому что их никто не использует

fixed

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

...и не делают ничего полезного.

А вот и авторитетное мнение экспертов.

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

Не совсем в предмет вашего спора, но в тему: есть актуальные, большие опенсурс-проекты, у которых в style guide прописано шкодить в стиле c89, в т.ч. потому, что охота собираться под всевозможные платформы, всевозможными компиляторами. И c99 прост не пропустят.

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

И зря. Если бы все начали кодить на C11, то «всевозможные платформы» либо канут либо подстроятся. В конце концов это официальный стандарт. И ему уже больше 5 лет

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

C11

А чего в нём есть такого, что делало бы его принципиально отличным от C99? Я новый документ не читал, помню только что-то про массивы переменной длины на стеке.

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

А чего в нём есть такого, что делало бы его принципиально отличным от C99?

Юникод, треды, атомики.

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

Он хранит об'екты в чём-то типа _List_node<T>; структура содержит сам об'ект в качестве поля и указатели на предыдущий/следующий.

memory layout ничем не отличается от того, если бы ты включил указатели в об'ект T.

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

Хм, а ведь я читал всё это когда-то, но позабыл. Минорота, ничего впечатляющего.

Static Assertions

Велосипедится макросами спокойно:

#define STATIC_ASSERT(COND,MSG) typedef char static_assertion_##MSG[(COND)?1:-1]

Type-Generic Functions

Это, конечно, хорошо, но реализовано через задницу.

Multithreading, Unicode Support

Это хипстота какая-то, зачем это вообще в переносимом ассемблере?

Memory Alignment Control, Bounds-Checking Functions

Стандартизировали маленько нужных функций.

Anonymous structs and unions

Ну, тут не возразишь.

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

Это хипстота какая-то, зачем это вообще в переносимом ассемблере?

Ну наверно, что бы не велосипедить это в юзерспейсных применениях.

А так, потоки, атомики, еще что то и несколько фич из C99 (комплексные числа, VLA) сделали необязательными.

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