LINUX.ORG.RU

Избранные сообщения dataman

В Geany добавили фильтрацию по сочетанию клавиш

Форум — Desktop

https://github.com/geany/geany/pull/4192

Но фильтруется только по названию действия, а не по самому сочетанию. :(

 , , ,

dataman
()

Автор whisper.cpp ищет сопровождающих

Форум — Talks

https://github.com/ggerganov/whisper.cpp/discussions/2788

В последнее время я стал уделять проекту меньше внимания, поскольку мое внимание сместилось в сторону llama.cpp и ggml. Тем не менее, whisper.cpp остается действительно классным проектом, который используется многими разработчиками и продуктами. В целом он находится в хорошем состоянии с точки зрения основной реализации и функциональности. Однако ему все больше и больше не хватает CI, документации, упаковки и распространения.

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

https://github.com/users/ggerganov/projects/16/

Это несколько высокоуровневых задач с множеством ответвлений и возможностей для внесения вклада. В основном они направлены на улучшение опыта разработчиков и конечных пользователей при использовании проекта. Конечная цель состоит в том, чтобы в какой-то момент у проекта появился долгосрочный сопровождающий (не я) и чтобы он продолжал жить под организацией ggml-org на Github (см. #2786).

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

Переведено DeepL.

 , , , ,

dataman
()

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

Форум — Science & Engineering

Учёные раскрывают секреты формирования планеты в образцах древних вулканов Марса.

В новом исследовании международная группа учёных во главе с профессором Мариек Шмидт из Университета Брока представила открытия о критическом периоде эволюционной истории Марса. Работа раскрывает новые подробности о геологическом прошлом Красной планеты.

Профессор Шмидт, возглавляющая кафедру наук о Земле в Университете Брока, участвовала в миссии марсохода Perseverance NASA в качестве научного сотрудника. Она и её коллеги анализировали древние породы, найденные в кратере Езеро на Марсе. Одной из основных целей миссии был поиск признаков древней микробной жизни, но изучение магматических пород и реголита в этом районе также дало представление о малоизученном периоде истории планеты.

«Мы делаем на Марсе то, чего никогда раньше не делали», – говорит Шмидт. Она также является со-исследователем в команде, работающей с прибором PIXL (Planetary Instrument for X-Ray Lithochemistry). Этот рентгенофлуоресцентный спектрометр использовался для определения элементного состава марсианских поверхностных материалов с высоким разрешением, позволяя учёным дистанционно «заглянуть» вглубь пород, чтобы исследовать, как они формировались и из чего состоят.

«Масштаб научных исследований был невероятным. Это самое всестороннее на сегодняшний день изучение образцов, которые были сохранены для возвращения на Землю», – отмечает Шмидт. «Теперь мы знаем минеральный и химический состав пород, понимаем их текстуры, но следующим шагом было рассказать о том, как, по нашему мнению, формировались эти породы с точки зрения подъёма магмы через марсианскую кору, её кристаллизации, эволюции и изменения состава».

Работа также выдвигает ряд гипотез, которые могут направлять дальнейшие исследования, когда образцы будут доставлены на Землю.

Таня Кизовски, соавтор статьи и заместитель куратора по минералогии в Королевском музее Онтарио, отмечает, что все марсианские образцы, изученные на Земле до сих пор, были метеоритами. Большинство марсианских метеоритов имеют возраст менее 500 миллионов лет, что относительно молодо по сравнению с 4,5-миллиардной историей Марса. В то же время образцы из кратера Езеро, как полагают, имеют возраст не менее 3,5 миллиардов лет.

«Марс очень хорошо сохранился с точки зрения ранней истории нашей Солнечной системы, поэтому возможность изучать такие древние породы, особенно когда они будут доставлены на Землю, поможет нам узнать об истории внутренней части Солнечной системы и о том, когда возникла жизнь», – говорит Кизовски.

Образцы также происходят из уникального периода в истории Марса, когда внутренняя динамика планеты претерпевала серьёзные изменения. Шмидт объясняет: «Вулканизм на Марсе в основном связан с так называемыми горячими точками, подобными Гавайям или Исландии на Земле, где есть сфокусированный источник магмы, уходящий глубоко, пробивающийся через всё и затем извергающийся на поверхность. Но в ранней истории Марса есть модели, подтверждающие идею о том, что марсианская кора формировалась в результате широко распространённого вулканизма, не обязательно сосредоточенного в этих горячих точках, и этот переход, как считается, произошёл примерно в то время, когда формировались эти породы».

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

Тем временем марсоход Perseverance продолжает исследовать новые районы Марса и собирать образцы, а Шмидт и её коллеги терпеливо ожидают возможности однажды проанализировать марсианские породы уже на Земле.

Это исследование открывает новую главу в изучении Марса, предоставляя учёным беспрецедентную возможность заглянуть в далёкое прошлое планеты. Анализ древних пород из кратера Езеро не только проливает свет на геологическую историю Марса, но и может помочь в поиске следов древней жизни на планете. Кроме того, эти данные могут быть ключом к пониманию ранних этапов формирования планет в Солнечной системе.

Источник: https://www.ixbt.com/news/2025/02/08/geologicheskaja-istorija-marsa-rentgenovskij-spektrometr-pomogaet-razgadyvat-marsianskie-zagadki.html.

https://ru.wikipedia.org/wiki/Езеро_(кратер)
https://ru.wikipedia.org/wiki/Персеверанс_(марсоход)

 , perseverance, ,

dataman
()

Форкнули QuickJS

Форум — Development

Оригинал Белларда: https://github.com/bellard/quickjs.
Форк: https://github.com/quickjs-ng/quickjs:

QuickJS is a small and embeddable JavaScript engine. It aims to support the latest ECMAScript specification.
This project is a fork of the original QuickJS project by Fabrice Bellard and Charlie Gordon, after it went dormant, with the intent of reigniting its development.

Версия 0.8.0 от 24 декабря 2024.


Другие JavaScript-движки на C.

https://github.com/svaarala/duktape – больше года без изменений.

Duktape is an embeddable Javascript engine, with a focus on portability and compact footprint.

https://github.com/jerryscript-project/jerryscript – версия 3.0.0 от 18 декабря 2024.

JerryScript is a lightweight JavaScript engine for resource-constrained devices such as microcontrollers. It can run on devices with less than 64 KB of RAM and less than 200 KB of flash memory.

 , , , ,

dataman
()

Свершилось! На GitHub можно обсуждать Midnight Commander!

Форум — Talks

https://github.com/MidnightCommander/mc-old

Midnight Commander’s Legacy Repository

⚠️ This repository has been archived! ⚠️

It reflects the state just before we switched from Trac to GitHub for issue tracking on Feb 28, 2025.

Please use the new repository at MidnightCommander/mc instead!

– Maintainers


MidnightCommander/mc

Уже:

Issues 620

https://github.com/MidnightCommander/mc/discussions/4658

Welcome to Midnight Commander Discussions!

 , ,

dataman
()

Бьёрн Страуструп призвал стандартизировать профили C++ для безопасной работы с памятью

Форум — Talks

https://www.opennet.ru/opennews/art.shtml?num=62821

Бьёрн Страуструп (Bjarne Stroustrup), создатель языка C++, призвал комитет WG21, отвечающий за разработку стандартов для языка C++, предпринять меры для сохранения актуальности C++ в условиях активного продвижения инициатив по переходу на языки, обеспечивающие безопасную работу с памятью. Страуструп считает, что язык С++ уже содержит все возможности, необходимые для безопасной работы с памятью. Остаётся только предоставить средства, гарантирующие, что код написан с использованием только безопасных возможностей.

По мнению Страуструпа, времени осталось очень мало и необходимо до 2026 года успеть предпринять какие-то меры, так как Агентство по кибербезопасности и защите инфраструктуры США и ФБР стали более активно продвигать среди производителей ПО идею перехода на языки, безопасного работающие с памятью. До 2026 года производителям ПО рекомендовано разработать план по применению в своих продуктах технологий, защищающих от ошибок при работе с памятью, или переходу на использование языков, безопасно работающих с памятью.

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

Для обеспечения разработки безопасного кода Страуструп предлагает стандартизировать систему профилей C++, вводящих дополнительные требования к коду. Профили близки к применению флагов -Wall и -Wextra при компиляции, но в отличие от них работают на уровне запрета применения определённых возможностей языка. К реализации предлагаются профили для безопасных типов, контроля времени жизни объектов, работы с допустимыми диапазонами значений и целочисленной арифметики. Привязку к профилям можно задавать не только для проекта и файлов (например, [[profile::enforce(type)]]), но и включать/отключать на уровне отдельных конструкций (например, [profile::suppress(lifetime))] this->succ = this->succ->succ;).

Работа по повышению безопасности будет сводится к включению профиля для определённого кода и переписыванию частей, использующих небезопасные возможности языка, охватываемые выбранным профилем. Например, использование профилей поможет уйти от применения в коде сырых указателей и массивов, избавиться приведения типов и защититься от обращений к неинициализированным объектам. Вместо сырых указателей можно использовать, например, умные указатели std::unique_ptr и std::shared_ptr с отслеживанием владения. При наличии в коде циклов «for», перебирающих отдельные элементы Си-массива, потребует заменить данные циклы на вариант с обработкой диапазонов for(type variable : vector), использующий std::vector.

Предложены следующие профили:

  • type – каждый объект должен быть инициализирован, не допускается приведение типов.
  • lifetime – запрещены ссылки на освобождённые или неиспользуемые области памяти, разыменование указателей, явный вызов new/delete.
  • bounds – требуется проверка допустимых диапазонов при работе с указателями, запрещены арифметические операции с указателями.
  • arithmetic – блокируются целочисленные переполнения, запрещены знаковые/беззнаковые преобразования, изменяющие значение.
  • concurrency – исключает операции, приводящие к взаимным блокировкам и состояниям гонки.
  • RAII (Resource Acquisition Is Initialization) – требует проверки владения для каждого ресурса.

Гарантии, реализуемые при использовании профилей:

  • Обращение к объекту допускается только в соответствии с типом, под которым этот объект был определён.
  • Каждый объект должен быть корректно создан и освобождён.Каждый объект должен быть корректно создан и освобождён.
  • Каждый указатель должен указывать на корректный объект или нулевой указатель.
  • Каждая ссылка через указатель не должна переходить по нулевому указателю.
  • Каждое обращение через индексированный указатель должно находиться в пределах допустимого диапазона.

 , , ,

dataman
()

Растогруб

Форум — Talks

https://www.opennet.ru/opennews/art.shtml?num=62945

Разработчики GRUB2 рассматривают возможность использования языка Rust.

Владимир Сербиненко, один из трёх мэйнтейнеров загрузчика GRUB2, внёсший в кодовую базу более пяти тысяч изменений, выставил на обсуждение возможность написания модулей для GRUB2 c использованием языка Rust. Владимир представил первые результаты экспериментов с добавлением поддержки Rust в GRUB2 и созданием необходимых обвязок. Для GRUB также подготовлены изменения, позволяющие использовать разделяемые библиотеки («.so», ET_DYN) для модулей, вместо связывания на уровне объектных файлов («.o», ET_REL).

Инициатива пока позиционируется как отдельный эксперимент, который не будет влиять на разработку GRUB2. В качестве оптимального применения Rust в GRUB упоминается написание модулей для новых файловых систем. Также не исключается переписывание на Rust кода для работы с дисковыми разделами и GPT.

Предполагается, что использование Rust поможет проекту уменьшить вероятность появление некоторых видов ошибок, особенно в коде модулей, содержащем множество больших и сложных процедур парсинга. В феврале в результате аудита кодовой базы GRUB были выявлены 72 проблемы с безопасностью, 21 из которых признаны опасными уязвимостями, пригодными для обхода механизма верифицированной загрузки UEFI Secure Boot. 20 из 21 уязвимостей вызваны ошибками при работе с памятью, приводившими к переполнению буфера или обращению к памяти после её освобождения.

Дополнительно можно отметить выпуск проекта GNU Boot 0.1 RC6, в состав которого вошли вышеотмеченные исправления уязвимостей (в самом GRUB2 исправления продолжают распространяться в виде патчей без формирования отдельного релиза). Проект GNU Boot развивает замену проприетарным прошивкам UEFI и BIOS, основанную на CoreBoot, но применяющую более жёсткие требования к включению бинарных компонентов. GNU Boot преподносится как «coreboot-libre», т.е. как редакция CoreBoot, избавленная от блобов и несвободных компонентов, по аналогии с тем, как проект Linux-libre развивает очищенный вариант ядра Linux. Отдельно развиваются похожие проекты Libreboot и Canoeboot.

 ,

dataman
()

jemalloc всё

Форум — Development

2 июня 2025 Jason Evans, автор аллокатора jemalloc, перевёл репозиторий в режим «только для чтения».

https://jasone.github.io/2025/06/12/jemalloc-postmortem/

Аллокатор памяти jemalloc был впервые задуман в начале 2004 года, и вот уже около 20 лет он находится в публичном использовании. Благодаря природе лицензирования программного обеспечения с открытым исходным кодом, jemalloc будет оставаться общедоступным неограниченное время. Однако активная разработка этого приложения подошла к концу. В этом посте кратко описаны этапы разработки jemalloc, каждый из которых характеризуется некоторыми успехами/неудачами, а затем даны некоторые ретроспективные комментарии.

TL;DR

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

 , , ,

dataman
()

Приближается 3I/ATLAS

Форум — Science & Engineering

https://ru.wikipedia.org/wiki/3I/ATLAS

3I/ATLAS или C/2025 N1 (ATLAS) (предварительное обозначение A11pl3Z) — межзвёздный объект с кометными свойствами, который 29 октября 2025 года сблизится с Солнцем до расстояния 1,36 а.е. Объект обладает самым большим эксцентриситетом из всех открытых межзвёздных объектов (6,15 ± 0,17 против 1,2 и 3 у Оумуамуа и у кометы Борисова соответственно). Максимальное сближение с Землёй ожидается 19 декабря 2025 года, расстояние до неё составит 1,8 ± 0,1 а.е.

Открытие
3I/ATLAS впервые обнаружен в ходе обзора неба ATLAS 1 июля 2025 года. Он двигался по небу вдоль границы созвездий Змеи и Стрельца, вблизи галактической плоскости. Обсерватории и любители астрономии сразу начали искать этот объект на более ранних снимках, чтобы увеличить дугу наблюдений 3I/ATLAS для уточнения его траектории. Объект удалось найти на снимках от 25 и 29 июня 2025 года. Прогнозируется, что 3I/ATLAS пролетит в 28 миллионах километров от Марса и (без учёта кометных свойств) достигнет на небе красной планеты 11-й звёздной величины, что сделает его едва видимым для аппарата MRO.

TL;DR

Гипотеза об искусственном происхождении

16 июля 2025 года астрофизик Ави Леб из Гарвардского университета и другие исследователи опубликовали статью на arXiv, в которой предполагается, что 3I/ATLAS может быть внеземным космическим аппаратом, поскольку они полагают, что объект обладает «аномальными» характеристиками.

Основные аргументы Леба в пользу искусственной природы:

* Орбита объекта совпадает с плоскостью земной орбиты всего на 5 градусов, что по оценкам: случайность с вероятностью 0,2 %.
* Движется по ретроградной траектории и обладает аномально высокой яркостью, что указывает на диаметр около 20 километров — больший, чем у типичной межзвездной кометы.
* Обнаружено негравитационное ускорение, предположительно связанное с активными манёврами объекта, что нехарактерно для естественных тел.
* Положение объекта при перигелии позволяет ему выполнить манёвр Оберта — космический приём для торможения и выхода на орбиту, что предполагает наличие управления движением.
Ученый связывает эти особенности с гипотезой темного леса из научной фантастики, согласно которой разумные цивилизации скрывают своё присутствие, опасаясь уничтожения, и могут запускать скрытные зонды для разведки.

Другие астрономы, в том числе Крис Линтотт из Оксфордского университета, сразу же раскритиковали предположение Леба; на сайте научных новостей — Live Science, сообщается, что «подавляющее большинство считает, что это комета», при этом многие исследователи «разочарованы новой статьей и отмечают, что она отвлекает от работы других ученых». Дэррил Селигман, возглавлявший первое исследование 3I/ATLAS, заявил, что «было проведено множество телескопических наблюдений 3I/ATLAS, демонстрирующих, что она имеет классические признаки кометной активности».

 ,

dataman
()

Отставка команды модераторов NixOS из-за разногласий с управляющим комитетом

Форум — Talks

https://www.opennet.ru/opennews/art.shtml?num=63967:

Команда модераторов, отвечавшая за поддержание порядка в форумах и репозиториях проекта NixOS, объявила о снятии с себя полномочий в знак протеста против действий управляющего комитета (SC - Steering Committee), вмешивающегося в работу модераторов и пытающегося влиять на принимаемые решения. Действия комитета рассматриваются модераторами как превышение полномочий и, так как правила проекта не регламентируют подобные ситуации, команда модераторов решила, что в сложившихся условиях не может добросовестно выполнять свою работу.

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

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

Протестующие модераторы призвали управляющий комитет подать в отставку, не дожидаясь выборов, которые должны пройти с 15 октября по 1 ноября, и уступить свои места новым членам, выбранным сообществом в ходе голосования. Сообществу рекомендовано добиваться прозрачности и подотчётности в работе управляющего совета, а также введения механизмов сдержек и противовесов для недопущения превышения полномочий.

Дополнение: Роберт Хенсинг (Robert Hensing) из управляющего комитета пояснил, что комитет пытался сотрудничать с командой модераторов для понимания модераторских решений, чтобы направить поведение модераторов в объективное русло, а также сделать модерацию справедливой. Основное недовольство модераторами было связано с тем, что модерация проводилась не на основе кодекса поведения, а на личных мнениях и компромиссах. Более решительные меры были предприняты так как модераторы не хотели отчитываться перед управляющим комитетом, которому они напрямую подчинены в иерархии проекта.

 ,

dataman
()

Уран и Нептун зачислили в ряды каменных планет

Форум — Science & Engineering

https://naked-science.ru/article/astronomy/new-interior-models-of-ur

По общепринятой и незыблемой до сих пор версии, Уран и Нептун — ледяные гиганты: основную часть их массы составляют летучие вещества в особом состоянии «горячих льдов». Теперь у планетологов появилась альтернативная гипотеза: они подозревают, что никаких «горячих льдов» внутри них может не быть, а вместо этого есть крупные каменные ядра, окруженные легкой газовой оболочкой.

Плотность Юпитера на самом деле даже немного выше плотности Урана — 1,33 грамма на кубический сантиметр. Тем не менее пока что никто не сомневается в том, что крупнейшая планета Солнечной системы — газовый гигант: состоит он почти целиком из водорода, но его огромная масса (318 масс Земли) создает внутри настолько экстремальное давление, что водород в самом центре переходит в «металлическое» состояние. 

Уран заключает в себе лишь около 14 масс Земли, а Нептун — 17, но при этом их плотности составляют 1,27 и 1,64 грамма на кубический сантиметр соответственно. Такого сильного давления, как внутри Юпитера, в них быть не может. Поэтому планетологи и пришли к выводу, что водород и гелий составляют лишь примерно треть их общей массы, а под этой легкой оболочкой должно скрываться нечто более тяжелое. 

До сих пор считалось, что это в основном «льды» — вода, аммиак и метан в совершенно особом состоянии, возможном только при очень сильном давлении и нагреве. Впрочем, в центрах обеих планет все же предполагается твердое ядро из камня и металла размерами и массой ориентировочно с Землю.

Недавно ученые из Университета Цюриха (Швейцария) поставили эту устоявшуюся концепцию под сомнение и поделились собственными расчетами в статье, доступной (1) на сервере препринтов arXiv.org. Они заверили, что собранных на сегодня данных об Уране и Нептуне недостаточно для того, чтобы уверенно называть их ледяными гигантами. 

Исследователи смоделировали разные варианты внутреннего строения этих планет так, чтобы оно одновременно соответствовало и всем их наблюдаемым параметрам, и вообще законам физики. Как выяснилось, и Уран, и Нептун с таким же успехом могут оказаться не ледяными, а «каменными» гигантами — содержать в себе твердые ядра размерами и массой до половины всей планеты и даже больше. Напомним, диаметр Урана и Нептуна — примерно 51 и 49 тысяч километров соответственно.

Ученые задались вопросом: как в таком случае должны генерироваться магнитные поля двух планет? У Урана и Нептуна они намного слабее, чем у Земли, а устроены гораздо сложнее. По основной версии, они формируются не в ядре, а в мантии — там вода от давления распадается на ионы, становится гораздо более электропроводной, и ее интенсивное перемешивание создает магнитное динамо. Как пишут планетологи, даже в качестве «каменных гигантов» Уран и Нептун не лишаются этого электропроводящего слоя, хотя он и должен быть тоньше, чем в классической модели их внутреннего строения.

(1) https://arxiv.org/abs/2510.00175

 ,

dataman
()

eXdupe — быстрый консольный архиватор файлов с дедупликацией и дифференциальным резервным копированием

Форум — Desktop

https://www.exdupe.net.

eXdupe 3tar+zstdkopiaresticDuplicacyzpaq647-Zip flzma2Duplicati
Time9.76 s14.2 s14.8 s24.8 s77.0 s112 s209 s360 s
Size7.34 GB10.6 GB9.93 GB9.21 GB11.4 GB8.18 GB9.42 GB10.2 GB

Исходный код на C и C++: https://github.com/rrrlasse/eXdupe, GNU GPL 2.0+.

Версия 3.0.0 от 30 июня:

  • Новый алгоритм хеширования для значительного повышения скорости и степени сжатия.
  • Быстрая обработка несжимаемых данных со скоростью дискового ввода-вывода.
  • Обнаружение и быстрая обработка файлов с полностью идентичным содержимым.
  • Одновременный обход каталогов для значительного ускорения обработки небольших файлов.

 , , , ,

dataman
()

Cex.C — making old C cexy again!

Форум — Development

Александр Веденеев пишет:

https://cex-c.org

Cex.C - Comprehensively Extended C Language
No dependency, cross-platform, single header C language extension. Making old C cexy again!

https://github.com/alexveden/cex

Cex.C (officially pronounced /ˈtsɛk.si/ «tsek-see») was born as alternative answer to a plethora of brand new LLVM based languages which strive to replace old C. Cex.C still remains C language itself, with small, but important tweaks that bring a completely different development experience.

LEGAL NOTICE: Any intentional mispronunciation of Cex.C or cexy$ (build system), officially pronounced /ˈtsɛk.si/ («tsek-see»), into an incorrect form may be considered intentional tseksual harassment of the project — which identifies itself with the code gender (it/its) — and may be subject to legal action under the MIT License. /LOL/

$ stat cex.h:

Size: 680288

#define CEX_IMPLEMENTATION
#include "cex.h"

int
main(int argc, char** argv)
{
    io.printf("MOCCA - Make Old C Cexy Again!\n");
    return 0;
}

 , ,

dataman
()

Fil-C — компилятор для языков C и C++, гарантирующий безопасную работу с памятью

Новости — Разработка
Группа Разработка

Цель разработки компилятора – полная совместимость с синтаксисом языков Си и С++ при обеспечении полной безопасности работы с памятью. Заявляется, что для использования достаточно пересобрать существующий код, так уже компилируются и работают bzip2, zip, pcre и ncurses. С незначительными модификациями поддерживается сборка OpenSSH, OpenSSL, CPython, SQLite, Lua, Curl, Lynx, jpeg6b, zsh, xzutils и simdutf.

( читать дальше... )

>>> Подробности

 , , ,

Ygor
()

новости про C23

Форум — Development

Как-то я пропустил эту статью от 28 февраля: https://thephd.dev/ever-closer-c23-improvements

Кратко о том что приняли нового в С23, и какие предложения отвергли. (в статье расписано более подробно)

Приняли:

  • N2935 Make false and true first-class language features
  • N2927 typeof
  • N2653 N2828 char8_t and Unicode Improvements!
  • N2900 Consistent, Warningless, and Intuitive Initialization with = {}
  • N2826 unreachable()
  • N2829 Make assert() macro user friendly for C and C++
  • N2432 N2841 K&R Function Declaration AND Definitions are 🪦
  • N2808 allow 16-bit ptrdiff_t again
  • N2778 Separating Variably-Modified Types from Variable Length Arrays
  • N2775 Literal Suffixes for _BitInt(N) types
  • N2701 @, $, and backtick are added to the source character set
  • N2764 [[_Noreturn]]
  • N2840 Make call_once mandatory

К сожалению часть предложений была отклонена от включения в С23:

  • N2896 #once and #once YOUR_GUARD_ID_HERE, to reduce include guard spam
  • N2895 N2892 defer, Lambdas
  • N2859 break break;, break continue;, break break continue;
  • N2917 constexpr

Также хочу скопировать из статьи пояснения по поводу defer и constexpr

defer, Lambdas, and similar were voted down, but still have consensus to proceed for a timeline beyond/after C23. I’ve personally volunteered to direct and maybe even steer the effort for Lambdas. defer might come along for the ride since it’s basically in the same vein when it comes to what variables are available for defer. Spoiler: we’re going to be pursuing barebones, simple defer that is block-scoped (to the nearest braces, or conditional/etc. if the braces are omitted). This is mostly to save us from making the same design mistake Go did, where they have a defer that may dynamically allocate (?! Jesus Christ!) or other complete nonsense.

other complete nonsense - ссылка на твит с таким текстом:

And this blocks

  for i := 0; i < 100000; i++ {
    mutex.Lock()
    defer mutex.Unlock()
    *counter += 1
  }

Is there anything in Go that is not broken?

constexpr - an extremely watered down version compared to C++ that is super simple and deliberately intended not to be much more than updated ways of handling constants in C - did not die. There is strong support to work on it, albeit it might not make C23. Which is perfectly okay, as long as it stays alive!

 ,

fsb4000
()

У журнала «Квант» открылся новый сайт

Новости — Open Source
У журнала «Квант» открылся новый сайт
Группа Open Source

У легендарного журнала «Квант» открылся новый сайт – там и свежий номер, и архив старых, созданных под руководством Андрея Колмогорова и других крупнейших математиков.

Сайт позволяет искать по автоматически распознанным изображениям представленных номеров журнала. Попробуйте на странице «Архив номеров» ввести интересующее вас словосочетание. В качестве примера: кубик Рубика. По клику на номер с жёлтым фоном открывается страница номера с подсвеченными найденными словами. А если вы школьником отправляли решения в «Задачник „Кванта“», то можете попробовать найти свою фамилию в списках читателей, приславших решения.

( читать дальше... )

>>> Журнал «Квант»

 , , , ,

z0idator
()

Lua Shell

Форум — Development

Контест этого топика: Леннарт теперь до эмуляторов терминала добрался (комментарий)

@EXL:

Лучше бы Lennart взялся за Bash.

@wandrien:

Там только выкинуть целиком. Я вот хочу попытаться для lua сделать обвязку для скриптинга уровня оболочки. Подобные либы на Lua есть, но качество и объем фич мне не нравится. Надо лучше. Тебе бы был интересен такой проект?


Итак, вот моя идея в общих чертах. Составные части, на которых основываться:

https://github.com/BanceDev/lush
Низкое качество сборочного скрипта. Вероятно, и кода тоже. Интересует идея в первую очередь.

https://github.com/mna/luashell
Ключевое, что нам нужно. Взять за основу. Но:

  • Нужны полнофункциональные средства перенаправления ввода-вывода, заменить эту часть API. Под капотом, вероятно. придётся делать полноценную обработку fork - настройка процесса - exec.
  • test() должен быть вменяемый, а не парсить строку по пробелам. Просто алиас для sh.cmd("test", ...).exec()
  • Форк процесса без exec в качестве элемента пайплайна на уровне API
  • Как расширение предыдущего - обёртка а ля sh.echo("text").

В качестве базового API взять https://25thandclement.com/~william/projects/lunix.html вместо https://github.com/luaposix/luaposix

Также рассмотреть для включения и/или как источник идей:


Общая идея:

  • Lua + lunix — получаем возможность писать на Луа «приложения как на Си под libc».
  • Сверху на это - форкнутый и допиленный luashell. Это ключевое.
  • Далее QoL вещи: lua-path, argparse, функции для парсинга и форматирвоания времени, функции для JSON.
  • Далее - разработать интерактивный режим для использования в качестве командной оболочки.

Продукт компилируется в статический бинарь с musl и/или cosmopolitan libc и получаем «вечный» shell. При этом весьма компактный.

 , , ,

wandrien
()

lexbor 2.5.0

Новости — Разработка
Группа Разработка

13 августа, после девяти месяцев разработки, состоялся выпуск 2.5.0 высокопроизводительной библиотеки lexbor, предназначенной для парсинга HTML 5 и CSS.

( читать дальше... )

>>> Подробности о версии на GitHub

 , , , ,

dataman
()

constixel.hpp

Галерея — Скриншоты

constixel.hpp – минималистичная (262K) С++20 constexpr-библиотека для рендеринга двумерной графики на основе палитр с возможностью вывода изображений в форматах Sixel, Kitty terminal graphics protocol и iTerm2 images protocol в эмуляторах терминала.

На скриншотах – вывод в WezTerm большинства примеров использования.

Основные возможности библиотеки:

  • Полностью constexpr. Весь рендеринг графики, включая генерацию Sixel, может происходить во время компиляции.
  • Никаких динамических выделений памяти. Буфер и очень немногие внутренние структуры данных могут быть глобальными статическими переменными.
  • Минималистичный интерфейс и реализация с единственным заголовочным файлом.
  • Буферы на основе 1-, 2-, 4- и 8-разрядных палитр для минимального использования памяти. Предоставляются разумные стандартные палитры. Также предусмотрены 24- и 32-битные буферы, если целью является что-то другое, а не Sixel.
  • Простые функции рисования fill_rect(), fill_round_rect(), draw_line(), fill_circle() и другие.
  • Рендеринг пропорционального текста, опционально с кернингом, с использованием предварительно отрендеренных текстур шрифтов в формате BMFont, генерируемых пользовательской версией fontbm. Репозиторий включает набор готовых шрифтов (с открытым исходным кодом), которые легко использовать. Поддерживается UTF-8.
  • Для уменьшения количества зависимостей предоставляется кодировщик PNG без сжатия.
  • Блиттинг необработанных 32-битных RGBA-буферов изображений в буфер на основе палитры (с дизерингом или без него). При необходимости возможна обратная конвертация в RGBA-буфер.
  • Различные другие простые операции с изображениями.

( читать дальше... )

 , , , двумерная графика,

dataman
()

Герб Саттер — отчёт о встрече по стандартам ISO C++ в июне 2025 года

Форум — Development

https://herbsutter.com/2025/06/21/trip-report-june-2025-iso-c-standards-meeting-sofia-bulgaria/

Уникальная веха: «Совершенно новый язык»

Сегодняшний день знаменует собой поворотный момент в развитии C++: несколько минут назад комитет C++ проголосовал за включение первых семи (7) документов по рефлексии во время компиляции в C++26 под несколько продолжительных аплодисментов в зале. Я думаю, что Хана «Мисс Constexpr» Дусикова лучше всего описала влияние этой функции несколько дней назад, в своей спокойной бесстрастной манере… Когда ей сказали, что документ об рефлексии попадёт на субботнее голосование по принятию, она слегка пожала плечами и тихо сказала: «Совершенно новый язык».

Микрофон упал.

До сегодняшнего дня, возможно, самым значимым опросом за всю историю C++ был опрос в Торонто в июле 2007 года о принятии первого документа «constexpr» Бьярне Струструпа и Габриэля Дос Рейса в проект C++11. Оглядываясь назад, мы можем видеть, какой тектонический сдвиг начался для C++.


Даниэль Лемир (Daniel Lemire) попробовал:


Экспериментальный форк clang от Bloomberg с поддержкой P2996 («Reflection for C++26»):

Есть в godbolt.org.

 ,

dataman
()