LINUX.ORG.RU

Сообщения dataman

 

Утверждён стандарт C++26

 ,

Группа Разработка

Комитет ISO по стандартизации языка C++ утвердил финальный вариант спецификации, образующей международный стандарт «C++26». Представленные в спецификации возможности частично уже поддерживаются в компиляторах GCC (gnu.org), Clang и Microsoft Visual C++. Поддерживающие C++26 стандартные библиотеки реализованы в рамках проекта Boost.

В следующие два месяца утверждённая спецификация будет находиться на стадии подготовки документа к публикации, на которой будет проведена работа по редакторской правке орфографических ошибок и опечаток. В начале ноября результирующий вариант документа будет направлен в ISO для публикации под формальным именем ISO/IEC 14882:2026.

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

>>> Источник: OpenNET (opennet.ru)

dataman
()

mcedit + tree-sitter

 , , , ,

Jiri Tyr сделал PR#5067 в Midnight Commander, добавляющий возможность интеграции библиотеки и парсеров tree-sitter в mcedit. Парсеры могут быть прилинкованы как статически, так и динамически (по умолчанию).

Прилагаемый скрипт по умолчанию загружает с репозиториев 63 парсера (без клонирования), но возможна их выборочная интеграция.

Выглядит перспективно для будущего улучшения, если автор на этом не остановится.

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

dataman
()

cpp-peglib 1.10.0 и 1.10.1

 , cpp-peglib, , ,

Группа Разработка

12-го и 14-го марта, после длительного затишья, состоялись выпуски 1.10.0 и 1.10.1 библиотеки cpp-peglib, реализующей PEG (грамматику, разбирающую выражение).

Библиотека поддерживает синтаксис, подробно описанный Брайаном Фордом на странице 2 документа «Parsing Expression Grammars: A Recognition-Based Syntactic Foundation», со многими дополнительными улучшениями.

В отличие от таких проектов, как PEGTL, Lexy и многих других, cpp-peglib позволяет задать выражение PEG и во время выполнения.

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

>>> Попробовать онлайн (пример грамматики JSON на скриншоте)

>>> Подробности на GitHub (github.com)

dataman
()

Раскрашивают strace...

 

Это ответ «colored output #377» на «Support for output coloring #39» (19-02-2018 г.).

dataman
()

ZXC 0.9.0

 , , , ,

Группа Open Source

Состоялся выпуск 0.9.0 библиотеки и кроссплатформенной консольной утилиты ZXC (github.com), реализующих высокопроизводительное многопоточное асимметричное сжатие без потерь и оптимизированное для игровых ресурсов, прошивок и пакетов приложений. Формат разработан по принципу «один раз записать, многократно читать» (WORM).

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

Декларируется скорость распаковки на 40%+ выше, чем у LZ4 на Apple Silicon, на 25%+ выше на Google Axion (ARM64) и на 5%+ выше на x86_64, при этом во всех случаях обеспечивается более высокий коэффициент сжатия.

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

Данный релиз содержит изменения, нарушающие ABI, поэтому SOVERSION увеличена до 2.

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

>>> Подробности на GitHub (github.com)

dataman
()

lexbor 2.7.0

 , , , ,

Группа Разработка

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

Основные особенности проекта:

  • полная поддержка спецификаций WHATWG, W3C и Unicode: HTML5, CSS Syntax 3, Encoding, URL​, Unicode Standard Annex #15, Unicode Technical Standard #46, Punycode, Unicode Standard Annex #15, Unicode Technical Standard #46;
  • манипулирование элементами и атрибутами DOM: добавление, изменение, удаление и прочее;
  • поддержка разбора фрагментов HTML;
  • прохождение всех тестов построения деревьев DOM;
  • протестирована на более чем 200 миллионах HTML-страниц с помощью ASAN;
  • поддержка определения кодировки по потоку байтов;
  • анализ стилей CSS в атрибутах тегов и в теге <style>;
  • поиск HTML-элементов с помощью CSS-селекторов;
  • поддержка 40 кодировок при кодировании и декодировании;
  • поддержка небуферизованного и буферизованного кодирования и декодирования;
  • написан на языке C (стандарт C99) без сторонних зависимостей и распространяется по лицензии Apache 2.0;
  • библиотека разделена на модули (Core, CSS, DOM, Encoding, Engine, HTML, NS, Punycode, Selectors, Tag, Unicode, URL, Utils), которые могут быть скомпилированы и использованы как раздельные библиотеки (с опцией CMake LEXBOR_BUILD_SEPARATELY=ON);
  • сторонние биндинги и врапперы для языков Crystal, ​​D​​, Elixir, Julia, PHP​, Python и Ruby.

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

>>> Сайт проекта

>>> Исходный код

>>> Документация

>>> Сделанные и запланированные возможности

>>> Подробности о версии 2.7.0 на GitHub (github.com)

dataman
()

Раскол в Manjaro Linux: проект переходит под контроль сообщества

 , , ,

https://www.comss.ru/page.php?id=19901:

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

Мейнтейнеры Manjaro инициировали масштабную реструктуризацию проекта с целью отделения от коммерческой структуры и создания независимого некоммерческого общества Manjaro Project e.V. За последнее десятилетие операционная система столкнулась с системным упадком, потерей контрибьюторов и финансовым кризисом. В настоящий момент объявлена забастовка, а часть процессов по поддержке дистрибутива полностью парализована.

Предпосылки к реорганизации
Несмотря на сохранение крупной пользовательской базы, разработка Manjaro стагнирует. Технические инциденты, включая несвоевременное продление TLS-сертификатов, остаются без внимания руководства, даже при наличии готовых инструментов автоматизации от энтузиастов.

Приоритеты текущего лидера радикально расходятся с интересами сообщества. Управление процессами осуществляется единолично, доступ к ключевой инфраструктуре закрыт для остальных специалистов, а попытки монетизации потерпели неудачу. Бренд эксплуатируется исключительно ради популярности, пользователи выполняют роль бесплатных тестировщиков, а средства команды Manjaro GmbH & Co KG не инвестируются в развитие. Бюджет полностью исчерпан, из-за чего единственный профильный разработчик, трудившийся на полную ставку, лишился источника дохода.

Новая модель управления
Для восстановления доверия и привлечения новых кадров проект выделяется в зарегистрированное некоммерческое общество (e.V.). Руководить организацией будут действующие участники, выразившие интерес к инициативе, с равными долями владения.

Прием новых лиц осуществляется по результатам голосования при наличии двух рекомендаций от действующего состава. Для узкопрофильных специалистов без истории участия в дистрибутиве требование снижается до одной рекомендации, а кандидатура оценивается исключительно по профессиональным навыкам. Любой участник может покинуть структуру по своему желанию. Принудительное исключение применяется только после 12 месяцев полного отсутствия связи. Допускается временная приостановка активности с заморозкой права голоса, что увеличивает допустимый период отсутствия до 36 месяцев.

Традиционная иерархия уступает место плоской структуре. Обязанности распределяются добровольно, однако финансовые операции требуют строгого одобрения казначея, а официальное представительство - согласования с комьюнити-менеджером. Решения принимаются общим голосованием продолжительностью от двух до четырех недель. Базовые вопросы утверждаются простым большинством, тогда как критические изменения требуют поддержки свыше 70% состава (минимум 5 из 7 человек).

Инфраструктура и активы
Коммерческая структура поэтапно перейдет в статус потребителя (downstream) решений некоммерческой организации. Бизнесу предоставляется исчерпывающая лицензия на торговую марку до конца 2029 года для выпуска неконфликтующих продуктов, после чего бренд будет выкуплен обществом за один евро.

Вся ключевая инфраструктура переходит под контроль некоммерческой организации. В перечень активов входят:

  • Организации на GitHub (Manjaro Linux, Manjaro-Kernels, Manjaro-ARM).
  • Собственный сервер GitLab и профильные Git-репозитории.
  • Домен manjaro.org и официальный форум.
  • Облачные ресурсы, включая хостинг Hetzner.
  • Сеть доставки контента (CDN).
  • Финансовые площадки уровня OpenCollective. Бизнес-подразделение сохранит доступ к мощностям при условии полной компенсации затрат на облако, пропускную способность и администрирование систем. Одновременно запускается процесс миграции коммерческих сервисов на независимые серверы.

Текущий статус и забастовка
При отсутствии компромиссных решений вступает в силу жесткий план действий. Нулевая стадия предусматривала ожидание ответа. На первой стадии публикуется манифест и начинается забастовка с остановкой второстепенных задач. Вторая стадия допускает форк дистрибутива или массовый уход мейнтейнеров.

Владелец бизнеса дважды проигнорировал запросы и увеличенные сроки на предоставление ответа. В результате активирована первая стадия, разделенная на три этапа. Сейчас идет начальный этап - публикация документа во внутренних каналах. Если игнорирование продлится еще 48 часов, запустится второй этап с переносом темы в раздел для участников. Спустя дополнительные 48 часов наступит третий этап: публикация в публичных анонсах и полная блокировка форума в режим чтения.

На данный момент администраторы, модераторы и помощники официально бастуют. Новые регистрации пользователей заморожены в очереди, обработка жалоб остановлена, перемещение и модерация тем прекращены. Инициативная группа также запросила поддержку у всех сотрудников с предложением подписать манифест реальными именами для переноса подписей в официальные PDF-копии.

Чтобы внести предельную ясность: цель состоит НЕ в том, чтобы кого-то отстранить, мы лишь надеемся на смену руководства и возвращение к формату здорового проекта сообщества. Разработка умирает, для спасения требуются радикальные перемены. Написанное выше не высечено в камне, если есть отзывы - делитесь. @philm получил копию этого документа 2 недели назад и до сих пор не ответил. Поэтому сейчас мы публикуем его во внутренних каналах.

dataman
()

SQLite 3.51.3 с исправлением возможного повреждения базы данных в режиме WAL

 , ,

SQLite 3.51.3 с исправлением возможного повреждения базы данных в режиме WAL
Группа Open Source

13-го марта состоялся корректирующий выпуск 3.51.3 компактной встраиваемой СУБД SQLite. Код проекта написан на языке C и распространяется как общественное достояние (public domain).

В связи с проблемами обратной совместимости, связанными с некоторыми новыми функциями, версия 3.52.0 (вышедшая 6-го марта) была отозвана.

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

>>> Страница загрузки

>>> Подробности на sqlite.org (sqlite.org)

dataman
()

smath 1.0.0 — библиотека линейной алгебры для языка C++ (стандарт C++23)

 , ,

Группа Разработка

Состоялся выпуск 1.0.0 библиотеки линейной алгебры для языка C++ (стандарт C++23) smath, распространяемой по лицензии Apache 2.0 в виде единственного небольшого заголовочного файла.

Возможности библиотеки:

  • дженерик-класс Vec<N, T> с полезными алиасами Vec2/Vec3/Vec4 и аксессорами (x/y/z/w, r/g/b/a). Векторы поддерживают приблизительное сравнение и кортежные/структурированные привязки;
  • тип Quaternion<T> на основе Vec4;
  • дженерик-класс Mat с полезными алиасами Mat2/Mat3/Mat4;
  • вспомогательные функции для углов rad/deg/turns с учётом настраиваемой базовой единицы измерения макросом SMATH_ANGLE_UNIT.
  • поддержка cвиззлинга во время компиляции (swizzle<"...">);
  • поддержка std::format;
  • опциональные неявные преобразования;
  • вспомогательные функции упаковки нормализованного RGBA (pack_unorm4x8, unpack_snorm4x8 и др.);
  • поддержка модулей C++20;
  • также предоставляются дополнительные адаптеры взаимодействия с библиотеками Eigen, GLM (OpenGL Mathematics), Handmade-Math, raylib и SFML.

>>> GitHub (github.com)

dataman
()

curl 8.19.0

 , , , ,

Группа Интернет

11-го марта, после более двух месяцев разработки и 538 коммитов, состоялся выпуск 8.19.0 (273-й) кроссплатформенной консольной утилиты и библиотеки curl, написанных на языке C и распространяемых по лицензии curl.

Основные изменения

Безопасность

  • Прекращена программа поощрений за обнаружение уязвимостей, но это не помешало людям находить уязвимости в curl:
    • CVE-2026-1965 – неправильное повторное использование соединения HTTP Negotiate;
    • CVE-2026-3783 – утечка токенов с перенаправлением и netrc;
    • CVE-2026-3784 – неправильное повторное использование прокси-соединения с учетными данными;
    • CVE-2026-3805 – использование памяти после освобождения в повторном использовании SMB-соединения.

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

>>> Полный список изменений на curl.se

>>> Видеопрезентация 8.19.0 на youtube

>>> Документация

>>> Страница загрузки

>>> Исходный код на GitHub

>>> Новость в блоге Даниэля Стенберга (haxx.se)

dataman
()

Glaze 7.2.0

 , , , ,

Группа Разработка

Состоялся выпуск 7.2.0 высокопроизводительной, SIMD-оптимизированной и многопоточной библиотеки Glaze, предназначенной для быстрой сериализации и десериализации данных с поддержкой форматов JSON RFC 8259, CSV, CBOR, BEVE, MessagePack, TOML, EETF (Erlang External Term Format) (опционально, для компиляции требуются библиотеки Erlang), YAML 1.2, Stencil и Mustache.

Библиотека написана на языке C++ (header-only, стандарт C++23 и выше) и распространяется по лицензии MIT.

Glaze также предоставляет поддержку REPE RPC и сервер и клиент HTTP, используя современные возможности C++, включая автоматическую генерацию REST API, поддержку WebSocket и шифрование SSL/TLS.

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

>>> Подробности на GitHub (github.com)

dataman
()

GCC 16 с C++26-рефлексией

 , ,

Тот редкий случай, когда обновление Devuan/Ceres сильно удивило. :)

https://gcc.gnu.org/gcc-16/changes.html#cxx:

clang 23.0 пока отстаёт. :)

dataman
()

ZXC 0.8.0 и 0.8.1

 , , , ,

Группа Open Source

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

Декларируется на 40%+ более быстрая распаковка, чем LZ4 на ARM64, с лучшими коэффициентами сжатия.

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

>>> Подробности на GitHub (github.com)

dataman
()

Нейросети на C от создателя Redis

 ,

Salvatore Sanfilippo тоже увлёкся нейросетями.

https://github.com/antirez/iris.c:

Iris is an inference pipeline that generates images from text prompts using open weights diffusion transformer models. It is implemented entirely in C, with zero external dependencies beyond the C standard library. MPS and BLAS acceleration are optional but recommended. Under macOS, a BLAS API is part of the system, so nothing is required.

The name comes from the Greek goddess Iris, messenger of the gods and personification of the rainbow.

Supported model families:

  • FLUX.2 Klein (by Black Forest Labs):
    • 4B distilled (4 steps, auto guidance set to 1, very fast).
    • 4B base (50 steps for max quality, or less. Classifier-Free Diffusion Guidance, much slower but more generation variety).
    • 9B distilled (4 steps, larger model, higher quality. Non-commercial license).
    • 9B base (50 steps, CFG, highest quality. Non-commercial license).
  • Z-Image-Turbo (by Tongyi-MAI):
    • 6B (8 NFE / 9 scheduler steps, no CFG, fast).

https://github.com/antirez/qwen-asr:

This is a C implementation of the inference pipeline for Qwen3-ASR speech-to-text models (both 0.6B and 1.7B). It has zero external dependencies beyond the C standard library and a BLAS implementation (Accelerate on macOS, OpenBLAS on Linux). Tokens stream to stdout as they are generated. The implementation runs at speed multiple of the file length even in very modest hardware, like low end Intel or AMD processor.

Important: this implementation explicitly avoids implementing support for MPS. Transcription systems are very important pieces of infrastructure, and are often run on remote Linux servers. Adding the MPS target would focus the efforts too much on Apple hardware, so for now I’m skipping it. The code runs very well anyway on Apple hardware (NEON optimized). Please, don’t send pull requests about this feature, fork the code instead, in order to add MPS support. I’ll add it much later when the other optimizations are already mature.

Supported modes and models

Both normal (offline) and streaming (online) modes are supported. Normal mode defaults to full offline decode (-S 0), so the whole audio is encoded at once. Streaming mode processes audio in 2-second chunks with prefix rollback (it keeps the last few decoded tokens as context for the decoder/LLM when transcribing the next chunk).

Important practical note: in this implementation, interactive --stream prioritizes incremental token stability over throughput and can be much slower than normal mode when you process an already-recorded file end-to-end.

Audio can be piped from stdin (--stdin), making it easy to transcode and transcribe any format via ffmpeg. Language is usually auto-detected from audio, and can be forced with --language. A system prompt can bias the model toward specific terms or spellings.

Both the 0.6B and 1.7B parameters models are supported. While the 1.7B model is generally more powerful, the 0.6B model seems the sweet spot for CPU inference, however the speed difference is not huge, so you may want to try both and decide what to use depending on your use case.


https://github.com/antirez/voxtral.c:

This is a C implementation of the inference pipeline for the Mistral AI’s Voxtral Realtime 4B model. It has zero external dependencies beyond the C standard library. The MPS inference is decently fast, while the BLAS acceleration is usable but slow (it continuously convert the bf16 weights to fp32).

Audio processing uses a chunked encoder with overlapping windows, bounding memory usage regardless of input length. Audio can also be piped from stdin (--stdin), or captured live from the microphone (--from-mic, macOS), making it easy to transcode and transcribe any format via ffmpeg. A streaming C API (vox_stream_t) lets you feed audio incrementally and receive token strings as they become available.

More testing needed: please note that this project was mostly tested against few samples, and likely requires some more work to be production quality. However the hard part, to understand the model inference and reproduce the inference pipeline, is here, so the rest likely can be done easily. Testing it against very long transcriptions, able to stress the KV cache circular buffer, will be a useful task.

Motivations (and some rant)

Thank you to Mistral for releasing such a great model in an Open Weights fashion. However, the author of this project believes that limiting the inference to a partnership with vLLM, without providing a self-contained reference implementation in Python, limits the model’s actual reach and the potential good effects it could have. For this reason, this project was created: it provides both a pure C inference engine and a simple, self-contained Python reference implementation (python_simple_implementation.py) that anyone can read and understand without digging through the vLLM codebase.


https://github.com/antirez/gguf-tools:

This is a work in progress library to manipulate GGUF files. While the library aims to be useful, one of the main goals is to provide an accessible code base that as a side effect documents the GGUF files used by the awesome llama.cpp project: GGUF files are becoming increasingly more used and central in the local machine learning scene, so to have multiple implementations of parsers and files generators may be useful.

The program gguf-tools uses the library to implement both useful and useless stuff, to show the library usage in the real world. For now the utility implements the following subcommands:

gguf-tools show file.gguf

shows detailed info about the GGUF file. This will include all the key-value pairs, including arrays, and detailed tensors informations. Tensor offsets will be relative to the start of the file (so they are actually absolute offsets), not the start of the data section like in the GGUF format.

gguf-tools compare file1.gguf file2.gguf

This tool is useful to understand if two LLMs (or other models distributed as GGUF files) are related, for instance if one is the finetune of another, or if both are fine-tuned from the same parent model.

For each matching tensor (same name and parameters count), the command computes the average weights difference (in percentage, so that a random distribution in the interval -N, +N would be on average 100% different than another random distribution in the same interval). This is useful to see if a model is a finetune of another model, how much it was finetuned, which layers were frozen while finetuning and so forth. Note that because of quantization, even tensors that are functionally equivalent may have some small average difference.

gguf-tools inspect-tensor file.gguf tensor.name [count]

Show all (if count is not specified, otherwise only the first count) weights values of the specified tensor. This is useful for low level stuff, like checking if quantization is working as expected, see the introduced error, model fingerprinting and so forth.

gguf-tools split-mixtral 65230776370407150546470161412165 mixtral.gguf out.gguf

Extracts a 7B model out.gguf from Mixtral 7B MoE using the specified MoE ID for each layer (there are 32 digits in the sequence 652…).

Note that split-mixtral is quite useless as models obtained in this way will not perform any useful work. This is just an experiment and a non trivial task to show how to use the library. Likely it will be removed soon, once I have more interesting and useful examples to show, like models merging.


https://github.com/antirez/ds4:

DwarfStar is a small native inference engine optimized first for DeepSeek V4 Flash, with support for DeepSeek V4 PRO on very high-memory machines. It is intentionally narrow: not a generic GGUF runner, not a wrapper around another runtime: it is completely self-contained. Other than running the model in a correct and fast way, the project goal is to provide DS4 specific loading, prompt rendering, tool calling, KV state handling (RAM and on-disk), server API and integrated coding agent, all ready to work with coding agents or with the provided CLI interface. There are also tools for GGUF and imatrix generation, and for quality and speed testing.

We support the following backends:

  • Metal is our primary target. Starting from MacBooks with 96GB of RAM.
  • NVIDIA CUDA with special care for the DGX Spark.
  • AMD ROCm is only supported in the rocm branch. It is kept separate from main since I (antirez) don’t have direct hardware access, so the community rebases the branch as needed.

This project would not exist without llama.cpp and GGML, make sure to read the acknowledgements section, a big thank you to Georgi Gerganov and all the other contributors.

dataman
()

GoldenDict-ng 26.3.0

 , , , ,

Группа Open Source

26 февраля состоялся выпуск 26.3.0 кроссплатформенного мультиформатного электронного словаря GoldenDict-ng – форка словаря GoldenDict.

Возможности словаря:

  • Поддержка локальных словарей в форматах: MDict, StarDict, ABBYY Lingvo DSL и .lsa/.dat, XDXF, Zim, Aard и Aard 2 (Slob), DictD, Epwing, SDictionary, Babylon и Babylon glossary builder, файлов со звуками в директориях и объединённых в архив zip.
  • Поддержка сетевых источников: Wikipedia и Wiktionary, протокол DICT, LinguaLibre и Forvo, любые сайты, поддерживающие поиск слов, заданных в адресной строке.
  • Поддержка других источников: из других приложений, текст-в-речь, словари морфологии, транслитерация.
  • Поиск сразу по нескольким источникам.
  • Полнотекстовый поиск в локальных словарях с использованием библиотеки Xapian.
  • Интеграция с Anki.
  • И многое другое.

Словарь написан на языке C++ с использованием фреймворка Qt 6 и распространяется по лицензии GNU GPL 3.

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

>>> Подробности на GitHub (github.com)

dataman
()

KaOS 2026.02

 , , , ,

Группа KDE

15 февраля, после трёх месяцев разработки, состоялся выпуск 2026.02 дистрибутива KaOS – независимого, созданного с нуля дистрибутива Linux и ориентированного на использование технологий Wayland, Qt и KDE.

В KaOS используется «плавающее» обновление пакетов (их более 2000) и pacman из проекта Arch Linux для управления пакетами.

До этой версии в качестве среды рабочего стола в KaOS использовалась KDE Plasma.

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

>>> Подробности на kaosx.us (kaosx.us)

dataman
()

35 лет назад Гвидо ван Россум написал в сети Usenet: «This is Python»...

 

Python 0.9.1 part 01/21:

Guido van Rossum guido at cwi.nl
Wed Feb 20 04:35:26 AEST 1991
Previous message (by thread): unbatcher out of sync?
Next message (by thread): Python 0.9.1 part 03/21
Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

: This is a shell archive.
: Extract with 'sh this_file'.
: Extract this part first since it makes all directories
echo 'Start of pack.out, part 01 out of 21:'
echo -n 'Making directories ... '
err="no"
test -d 'demo' || mkdir 'demo' || err="yes"
test -d 'demo/scripts' || mkdir 'demo/scripts' || err="yes"
test -d 'demo/sgi' || mkdir 'demo/sgi' || err="yes"
test -d 'demo/sgi/audio' || mkdir 'demo/sgi/audio' || err="yes"
test -d 'demo/sgi/audio_stdwin' || mkdir 'demo/sgi/audio_stdwin' || err="yes"
test -d 'demo/sgi/gl' || mkdir 'demo/sgi/gl' || err="yes"
test -d 'demo/sgi/gl_panel' || mkdir 'demo/sgi/gl_panel' || err="yes"
test -d 'demo/sgi/gl_panel/apanel' || mkdir 'demo/sgi/gl_panel/apanel' || err="yes"
test -d 'demo/sgi/gl_panel/flying' || mkdir 'demo/sgi/gl_panel/flying' || err="yes"
test -d 'demo/sgi/gl_panel/nurbs' || mkdir 'demo/sgi/gl_panel/nurbs' || err="yes"
test -d 'demo/sgi/gl_panel/twoview' || mkdir 'demo/sgi/gl_panel/twoview' || err="yes"
test -d 'demo/stdwin' || mkdir 'demo/stdwin' || err="yes"
test -d 'doc' || mkdir 'doc' || err="yes"
test -d 'lib' || mkdir 'lib' || err="yes"
test -d 'src' || mkdir 'src' || err="yes"
echo 'done'
if test "$err" = "yes"
then echo "didn't make it."
fi
if test -s 'README'
then echo '*** I will not over-write existing file README'
else
echo 'x - README'
sed 's/^X//' > 'README' << 'EOF'
This is Python, an extensible interpreted programming language that
combines remarkable power with very clear syntax.

This is version 0.9 (the first beta release), patchlevel 1.

Python can be used instead of shell, Awk or Perl scripts, to write
prototypes of real applications, or as an extension language of large
systems, you name it.  There are built-in modules that interface to
the operating system and to various window systems: X11, the Mac
window system (you need STDWIN for these two), and Silicon Graphics'
GL library.  It runs on most modern versions of UNIX, on the Mac, and
I wouldn't be surprised if it ran on MS-DOS unchanged.  I developed it
mostly on an SGI IRIS workstation (using IRIX 3.1 and 3.2) and on the
Mac, but have tested it also on SunOS (4.1) and BSD 4.3 (tahoe).

Building and installing Python is easy (but do read the Makefile).
A UNIX style manual page and extensive documentation (in LaTeX format)
are provided.  (In the beta release, the documentation is still under
development.)

Please try it out and send me your comments (on anything -- the
language design, implementation, portability, installation,
documentation) and the modules you wrote for it, to make the first
real release better.  If you needed to hack the source to get it to
compile and run on a particular machine, send me the fixes -- I'll try
to incorporate them into the next patch.  If you can't get it to work
at all, send me a *detailed* description of the problem and I may look
into it.

If you want to profit of the X11 or Mac window interface, you'll need
STDWIN.  This is a portable window system interface by the same
author.  The versions of STDWIN floating around on some archives are
not sufficiently up-to-date for use with Python.  I will distribute
the latest and greatest STDWIN version at about the same time as Python.

I am the author of Python:

	Guido van Rossum
	CWI, dept. CST
	Kruislaan 413
	1098 SJ  Amsterdam
	The Netherlands

	E-mail: guido at cwi.nl

The Python source is copyrighted, but you can freely use and copy it
as long as you don't change or remove the copyright:

/***********************************************************
Copyright 1991 by Stichting Mathematisch Centrum, Amsterdam, The
Netherlands.
# Fancy NURBS demo.  Require Z buffer and Panel Library.

from gl import *
from GL import *
from DEVICE import *
from nurbsdata import *
import panel

#
# flags = trim_f, invis_f, cpvis_f, tpvis_f, axvis_f, freeze_f
#
TRIM	= 0
VIS	= 1
CPVIS	= 2
TPVIS	= 3
AXVIS	= 4
FREEZE	= 5
flags = [0, 1, 0, 0, 0, 0]

def draw_axis () :
	cpack (0x0)
	zero = (0.0, 0.0, 0.0)
	#
	one = (1.0, 0.0, 0.0)
	smallline (zero, one)
	cmov (1.0, 0.0, 0.0)
	charstr ('x')
	#
	one = (0.0, 1.0, 0.0)
	smallline (zero, one)
	cmov (0.0, 1.0, 0.0)
	charstr ('y')
	#
	one = (0.0, 0.0, 1.0)
	smallline (zero, one)
	cmov (0.0, 0.0, 1.0)
	charstr ('z')

DELTA = 0.1

def cross (p) :
	p0 = [p[0], p[1], p[2]]
	p1 = [p[0], p[1], p[2]]
	for i in range (0, 3) :
		p0[i] = p0[i] + DELTA
		p1[i] = p1[i] - DELTA
		smallline (p0, p1)
		p0[i] = p0[i] - DELTA
		p1[i] = p1[i] + DELTA

def smallline (p0, p1) :
	bgnline ()
	v3f (p0)
	v3f (p1)
	endline ()

def draw_pts (pnts, color) :
	linewidth (2)
	cpack (color)
	for i in pnts :
		cross (i)

def init_windows():
	foreground()
	wid = winopen('nurbs')
	wintitle('NURBS Surface')
	doublebuffer()
	RGBmode()
	gconfig()
	lsetdepth(0x000, 0x7fffff)
	zbuffer( TRUE )

def init_view():
	mmode(MPROJECTION)
	ortho( -5., 5., -5., 5., -5., 5. )
	#
	mmode(MVIEWING)
	loadmatrix(idmat)
	#
	lmbind(MATERIAL, 1)

def set_scene(flags):
	#
	lmbind(MATERIAL, 0)
	RGBcolor(150,150,150)
	lmbind(MATERIAL, 1)
	clear()
	zclear()
	#
	if not flags[FREEZE] :
		rotate( 100, 'y' )
		rotate( 100, 'z' )

def draw_trim_surface(flags):
	pnts = ctlpoints
	if flags[VIS] :
		bgnsurface()
		nurbssurface(surfknots,surfknots,pnts,ORDER,ORDER,N_XYZ)
		if flags[TRIM]:
			bgntrim()
			nurbscurve(trimknots,trimpoints,ORDER-1,N_STW)
			endtrim()
		endsurface()
	#
	if flags[CPVIS] :
		for i in pnts :
			draw_pts (i, RED)
	#
	if flags[TPVIS] :
		tpts = trimpoints
		draw_pts (tpts, YELLOW)
	#
	if flags[AXVIS] :
		draw_axis ()
	#
	swapbuffers()

def make_lights():
	lmdef(DEFLMODEL,1,[])
	lmdef(DEFLIGHT,1,[])
	#
	# define material #1
	#
	a = []
	a = a + [EMISSION, 0.0, 0.0, 0.0]
	a = a + [AMBIENT,  0.1, 0.1, 0.1]
	a = a + [DIFFUSE,  0.6, 0.3, 0.3]
	a = a + [SPECULAR,  0.0, 0.6, 0.0]
	a = a + [SHININESS, 2.0]
	a = a + [LMNULL]
	lmdef(DEFMATERIAL, 1, a)
	#
	# turn on lighting
	#
	lmbind(LIGHT0, 1)
	lmbind(LMODEL, 1)

def main():
	init_windows()
	make_lights()
	init_view()
	#
	panel.needredraw()
	panels = panel.defpanellist('nurbs.s')
	p = panels[0]
	#
	def cbtrim (a) :
		flags[TRIM:TRIM+1] = [int (a.val)]
	p.trim.upfunc = cbtrim
	#
	def cbquit (a) :
		import sys
		sys.exit (1)
	p.quit.upfunc = cbquit
	#
	def cbmotion (a) :
		flags[FREEZE:FREEZE+1] = [int (a.val)]
	p.motion.upfunc = cbmotion
	#
	def cbxyzaxis (a) :
		flags[AXVIS:AXVIS+1] = [int (a.val)]
	p.xyzaxis.upfunc = cbxyzaxis
	#
	def cbtrimpnts (a) :
		flags[TPVIS:TPVIS+1] = [int (a.val)]
	p.trimpnts.upfunc = cbtrimpnts
	#
	def cbcntlpnts (a) :
		flags[CPVIS:CPVIS+1] = [int (a.val)]
	p.cntlpnts.upfunc = cbcntlpnts
	#
	def cbnurb (a) :
		flags[VIS:VIS+1] = [int (a.val)]
	p.nurb.upfunc = cbnurb
	#
	set_scene(flags)
	setnurbsproperty( N_ERRORCHECKING, 1.0 )
	setnurbsproperty( N_PIXEL_TOLERANCE, 50.0 )
	draw_trim_surface(flags)
	#
	while 1:
		act = panel.dopanel()
		#
		wid =  panel.userredraw ()
		if wid :
			winset (wid)
			reshapeviewport()
			set_scene(flags)
			draw_trim_surface(flags)
		#
		set_scene(flags)
		draw_trim_surface(flags)

main()
dataman
()

kew — простой консольный аудиоплеер

 , , kew, termbox2,

kew (codeberg.org) (kjuː) – минималистичный консольный аудиоплеер со следующими возможностями:

  • поиск в музыкальной библиотеке по части названия, из командной строки и в TUI;
  • автоматическое создание плейлиста на основе совпадений песни, альбома или исполнителя;
  • безопасность — kew не собирает¹ никаких данных;
  • Музыка без отвлекающих факторов и алгоритмических манипуляций;
  • полноцветные обложки треков в эмуляторах терминала, поддерживающих sixel;
  • встроенный визуализатор с настройками внешнего вида. Также поддерживается внешний консольный визуализатор Chroma;
  • воспроизведение без пауз (gapless playback);
  • добавление файлов и директорий в очередь воспроизведения;
  • поддержка аудиоформатов MP3, FLAC, MPEG-4/M4A (AAC), OPUS, OGG, Webm и WAV;
  • поддержка событий рабочего стола через MPRIS;
  • поддержка показа текстов песен из файлов .lrc, встроенных в тег SYLT (MP3) или комментариев Vorbis (FLAC, Ogg, Opus);
  • темы или цвета, основанные на обложках треков.

¹. По умолчанию kew отображает свой статус в Discord, но эту функцию можно отключить как в Discord, так и в конфигурационном файле ~/.config/kew/kewrc (discordRPCEnabled=0).

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

dataman
()

Zen C — очередной улучшенный Си

 , zen c, , ,

https://www.zenc-lang.org
https://github.com/z-libs/Zen-C
https://github.com/z-libs/Zen-C/blob/main/translations/README_RU.md:

Современная эргономика. Никаких накладных расходов. Чистый Си.
Пишите как на высокоуровневом языке, запускайте как Си.
Zen C — это современный язык системного программирования, который компилируется в человекочитаемом GNU C/C11. Он предоставляет богатый набор возможностей, включая вывод типов, сопоставление с паттернами, генерику, трейты, async/await и ручное управление памятью с возможностями RAII, при этом поддерживая 100% совместимость с ABI Си.

Портативная сборка (APE)
Zen C можно скомпилировать как Actually Portable Executable (APE) с помощью Cosmopolitan Libc. Это создаёт один исполняемый файл (.com), работающий нативно на Linux, macOS, Windows, FreeBSD, OpenBSD и NetBSD на архитектурах x86_64 и aarch64.

https://github.com/z-libs/Zen-C/blob/main/examples/features/comptime_fib.zc:

fn main() {
    comptime {
        let N = 20;
        let fib: long[20];
        fib[0] = (long)0;
        fib[1] = (long)1;
        for let i=2; i<N; i+=1 {
            fib[i] = fib[i-1] + fib[i-2];
        }

        printf("// Generated Fibonacci Sequence\n");
        printf("let fibs: int[%d] = [", N);
        for let i=0; i<N; i+=1 {
            printf("%ld", fib[i]);
            if (i < N-1) printf(", ");
        }
        printf("];\n");
    }

    print "Compile-time generated Fibonacci sequence:\n";
    for i in 0..20 {
        print f"fib[{i}] = {fibs[i]}\n";
    }
}
dataman
()

Shotcut 26.1 и 26.2 BETA

 , , , ,

Группа Мультимедиа

30 января состоялся выпуск 26.1 кроссплатформенного видеоредактора Shotcut с поддержкой большого количества аудио- и видеоформатов благодаря использованию библиотек FFmpeg.

Проект написан на языке С++ с использованием фреймворков MLT (mltframework.org) и Qt, и распространяется по лицензии GPL 3.0.

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

>>> Список изменений версии 26.2 BETA на GitHub – там же можно скачать сборки в различных форматах.

>>> Список изменений версии 26.1 на shotcut.org (shotcut.org)

dataman
()