Skip to content

Ouroboros-Logger 0.5.0

Choose a tag to compare

@the-homeless-god the-homeless-god released this 30 Aug 02:55
· 108 commits to main since this release

Восемь языков: Python, JavaScript/TypeScript, C, C++, Elixir, Go, Java, C#.

Что нового

Java — обмазка через try/catch/finally. Разборщик доставать неоткуда не надо: это компилятор, который уже лежит внутри любого JDK (javax.tools вместе с com.sun.source). Ввоза помощника не вставляется вовсе, ни одна врезка не содержит перевода строки — номера строк и след вызовов у необработанного исключения совпадают построчно.

C# — то же устройство. Roslyn берётся из самого пакета .NET SDK: путь выясняется из dotnet --list-sdks, качать нечего. Пять видов частей не обмазываются, потому что обмазанный вариант не собрался бы (yield, возврат по ссылке, указатели, ссылочные структуры, свойства с телом-выражением), и про каждую обмазка возвращает предупреждение с причиной.

Починена старая поломка в JavaScript. Обмазка портила файлы, где есть знак вне базовой плоскости: babel считает смещения в единицах UTF-16, питон режет по кодовым точкам, и один смайлик в комментарии делал обмазанный файл несобираемым. Молча, с сообщением об успехе. Было во всех прежних выпусках с обработчиком JavaScript.

Две проверки схемы записи ничего не проверяли. Проверка про опознаватели вызовов пересобирала программу между прогонами и тем сбивала условие, которое проверяла. Проверки на монотонные часы не было вовсе ни у одного языка — теперь есть.

Цена, снятая одним прогоном на всех восьми

язык добавка на вызов байт на вызов
C# 15,6 мкс 251,4
C 19,9 мкс 248,4
JavaScript 20,4 мкс 236,5
Java 20,9 мкс 251,4
C++ 22,2 мкс 269,4
Go 28,9 мкс 243,4
Python 58,2 мкс 252,5
Elixir ~190 мкс 254,4

Состояние

991 проверка, покрытие с ветвями 99,59 %. Набор равенства — 151 программа на восьми языках: каждая гоняется дважды, без обмазки и с обмазкой, и три исхода сверяются побайтово.

Страницы: https://digitable-lol.github.io/ouroboros/