Проекты

Работы, поддерживаемые в рамках дистрибутива Radix.Linux, а также работы, опубликованные на сайте dynamics.su.

Здесь собраны самостоятельные проекты, связанные с вычислениями повышенной точности, вводом‑выводом, генерацией синтаксических анализаторов и формирующимся инструментарием MCPU. Каждый проект имеет собственный репозиторий и отдельный цикл выпусков; на этой странице приведено только тематическое разделение проектов.

Libraries

LibMPU

LibMPU (Math Processor Unit Library) – библиотека на языке C для целых, вещественных и комплексных чисел повышенной разрядности. Арифметические операции поддерживаются до 65536 бит, тригонометрические функции – до 16384 бит.

Числовые объекты представлены фиксированными массивами байтов и имеют именованные типы для стандартных разрядностей. Помимо обычных арифметических операций библиотека предоставляет преобразования чисел в текст и обратно, а также процессорную модель арифметических флагов, позволяющую строить цепочки операций с переносом и заёмом. LibMPU служит базовым вычислительным слоем для проектов MCPU и научных программ, которым недостаточно стандартных машинных типов.

На практике библиотека используется как арифметический backend: типы mpu_int*, mpu_real* и mpu_complex* имеют предсказуемую разрядность, а программы могут выбирать storage width под конкретную задачу. Отдельная страница проекта содержит пример работы с real numbers, описание data formats и модели FLAGS.

1.0.25

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

LibMPUIO

LibMPUIO – библиотека форматированного и потокового ввода‑вывода для LibMPU. Она предоставляет собственный mpu_FILE, стандартные потоки, файловый ввод‑вывод, буферизацию, позиционирование и семейства функций printf/scanf.

Внутренний текст представлен строгим UCS‑2, а реальные text streams используют UTF‑8; raw I/O остаётся байтовым и не выполняет скрытой перекодировки. Format grammar расширена модификатором z/Z<bits>, поэтому через один интерфейс можно читать и печатать обычные C-типы и большие integer, real и complex объекты LibMPU. Также поддерживаются memory streams, command pipes, cookie streams и _unlocked‑варианты API.

Страница LibMPUIO оформлена как повседневный reference: рядом с format strings показан фактический output, разобраны width/precision, %s/%a, большие integer, real и complex formats, formatted input, memory streams и типовые ошибки при смешивании bytes и characters.

1.0.4

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


MCPU

mcpu-cpp

mcpu-cpp – самостоятельный препроцессор языков программирования MCPU, не привязанный к одному конкретному frontend. Внешние исходные файлы имеют кодировку UTF‑8, а после ранних preprocessing phases текст обрабатывается в строгой UCS‑2 модели LibMPUIO.

Реализованы object‑like и function‑like macros, stringification #, token concatenation ##, variadic macros, условная компиляция, #include/#include_next, #pragma once, GNU‑совместимые line markers и генерация зависимостей. Директива #lang переключает активный язык директив, что позволяет использовать единый preprocessing engine для ассемблера и будущих компиляторов MCPU.

Для build system особенно важны режимы -M/-MM/-MD/-MMD: dependency graph строится тем же include-проходом, что и preprocessing, поэтому собственный Makefile может за один вызов получать и препроцессированный source, и точный .d file. Подробная project page содержит готовый Makefile-рецепт, правила -MF/-MT/-MQ/-MG и способы инспекции effective configuration.

1.0.2

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


Development

ZUBR

ZUBR – генератор синтаксических анализаторов для контекстно‑свободных LALR(1) грамматик. По пользовательской спецификации он строит C‑код parser, который получает tokens от lexer и выполняет semantic actions при свёртке правил. Язык спецификаций сохраняет основные соглашения AT&T Yacc и Berkeley Yacc.

Спецификация включает declarations, grammar rules и пользовательский C‑код; поддерживаются semantic values, precedence/associativity, разрешение конфликтов и error recovery. Дополнительные возможности ZUBR позволяют иметь в одной программе несколько lexer/parser процедур и переключать их во время выполнения. Современная реализация использует UTF‑8 на внешней границе и UCS‑2 внутри.

Страница проекта теперь служит практическим руководством: показывает BNF-style rules, semantic values, чтение z.output, shift/reduce и reduce/reduce conflicts, precedence, %prec, error recovery и организацию нескольких parsers. Это позволяет использовать её как рабочую памятку при проектировании compiler frontend, а не только как описание программы.

4.1.0

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