#prog #article
Как мы баг в PVS-Studio искали или 278 Гигабайтов логов
Три фикса для достижения нормальной скорости работы, один из которых исправил логическую ошибку.
Как мы баг в PVS-Studio искали или 278 Гигабайтов логов
👍6
Вы могли спросить, почему на канале нет постов за звёзды? Это потому, что звёздочки у меня уже есть. Это — вы, мои дорогие папищеки
❤41🥰17🔥4❤🔥1💩1
#prog #rust #article
Piccolo - A Stackless Lua Interpreter
Интепретатор Lua с рабочей сборкой мусора и дизайном, позволяющим исполнение недоверенного кода за счёт явного вызова шага работы VM.
А ещё этот дизайн позволяет скомпилировать piccolo в WASM и использовать его в JavaScript без блокирования основного потока.
Piccolo - A Stackless Lua Interpreter
Интепретатор Lua с рабочей сборкой мусора и дизайном, позволяющим исполнение недоверенного кода за счёт явного вызова шага работы VM.
А ещё этот дизайн позволяет скомпилировать piccolo в WASM и использовать его в JavaScript без блокирования основного потока.
❤3
Forwarded from Neural OpenNet
Игра написана на языке Си и уже присутствуют на всех компьютерах мира.
😭5
Блог*
#prog #rust #dotnet #article Автор продолжил заниматься своим проектом и планирует превратить его в полноценный бекенд для кодогенерации. С момента выпуска Compiling Rust for .NET, using only tea and stubbornness! автор опубликовал три заметки, рассказывающие…
#prog #rust #dotnet #article
Автор продолжил работать над этим кодогенератором и в процессе получил добро на Google summer of code для своего проекта и обзавёлся спонсорством на Github. Особенно впечатляет, что он этого добился в возрасте 18 лет.
Автор также опубликовал несколько заметок с отчётом о прогрессе в деле компиляции Rust в .NET CIL (Common Intermediate Language — ассемблерно-подобный платформо-независимый язык, в который компилируются языки на .NET — C#, F# и Visual Basic).
My experience working on rustc_codegen_clr - half a year retrospective (январь 2024) — как и следует из названия, автор суммирует прогресс до этой точки. Автор делится впечатлениями от работы с rustc, а также упоминает осложнения, связанные с представлением обобщённых типов в .NET.
Stack unwinding, ARM and CIL trees (март 2024) — упоминает об изменениях в кодогенераторе. Для раскрутки стека, что неудивительно, удалось задействовать нативные исключения .NET. Так автор рассказывает об изменении внутреннего представления CIL (переход от плоского списка к AST), а также о некоторых заковыках, связанных с типами нулевого размера (которые .NET-рантайм просто не поддерживает) и с разной семантикой кастов из чисел с плавающей точкой в целочисленные в Rust и CIL.
Rust to .NET compiler - Progress update (май 2024) — рассказывает о (частичной) реализации поддержки аргументов командной строки (необходимой для реализации кода, генерируемого
Statically Sized, dynamically sized, and other (июнь 2024) — повествует об истории одного крайне неприятного бага, связанного с деталями реализациииз-за extern type тип с неизвестным размером ≠ тип с рантайм-размером .
Автор продолжил работать над этим кодогенератором и в процессе получил добро на Google summer of code для своего проекта и обзавёлся спонсорством на Github. Особенно впечатляет, что он этого добился в возрасте 18 лет.
Автор также опубликовал несколько заметок с отчётом о прогрессе в деле компиляции Rust в .NET CIL (Common Intermediate Language — ассемблерно-подобный платформо-независимый язык, в который компилируются языки на .NET — C#, F# и Visual Basic).
My experience working on rustc_codegen_clr - half a year retrospective (январь 2024) — как и следует из названия, автор суммирует прогресс до этой точки. Автор делится впечатлениями от работы с rustc, а также упоминает осложнения, связанные с представлением обобщённых типов в .NET.
Stack unwinding, ARM and CIL trees (март 2024) — упоминает об изменениях в кодогенераторе. Для раскрутки стека, что неудивительно, удалось задействовать нативные исключения .NET. Так автор рассказывает об изменении внутреннего представления CIL (переход от плоского списка к AST), а также о некоторых заковыках, связанных с типами нулевого размера (которые .NET-рантайм просто не поддерживает) и с разной семантикой кастов из чисел с плавающей точкой в целочисленные в Rust и CIL.
Rust to .NET compiler - Progress update (май 2024) — рассказывает о (частичной) реализации поддержки аргументов командной строки (необходимой для реализации кода, генерируемого
#[test]
), а также о некотором безразличии .NET-рантайма к знакам целочисленных типов и о секретном третьем типе с плавающей точкой внутри него.Statically Sized, dynamically sized, and other (июнь 2024) — повествует об истории одного крайне неприятного бага, связанного с деталями реализации
std::fmt
, и о том, как в этом проявилось неправильная компиляция. Спойлер: 🔥12👍1
Блог*
#prog #rust #dotnet #article Автор продолжил работать над этим кодогенератором и в процессе получил добро на Google summer of code для своего проекта и обзавёлся спонсорством на Github. Особенно впечатляет, что он этого добился в возрасте 18 лет. Автор также…
Я тут ставлю хештег csharp, но вообще-то с этим языком непосредственно материалы не связаны. Может, ввести отдельный хештег для .NET?
👍3
Forwarded from Data Funk
Желание разложить что-угодно по группам на основе схожести - естественная черта человека, но задача кластеризации данных, почти всегда как плохое ТЗ для дизайнера - делай красиво, а не красиво не делай. Какой алгоритм кластеризации хороший, а какой плохой если сравнивать результат их работы не с чем? Джон Клейнберг из Корнеллского университета в 2002 году сформулировал три критерия хорошего алгоритма кластеризации:
- Масштабная инвариантность. Если все расстояния между точками умножить на положительное число, это не должно менять результат работы хорошего алгоритма.
- Насыщенность/разнообразие. Хороший алгоритм способен создать любую произвольную комбинацию разбиения входных данных.
- Согласованность. Если уменьшаем внутрикластерные расстояния и/или увеличиваем межкластерные, алгоритм должен возвращать то же разбиение на кластеры.
- Масштабная инвариантность. Если все расстояния между точками умножить на положительное число, это не должно менять результат работы хорошего алгоритма.
- Насыщенность/разнообразие. Хороший алгоритм способен создать любую произвольную комбинацию разбиения входных данных.
- Согласованность. Если уменьшаем внутрикластерные расстояния и/или увеличиваем межкластерные, алгоритм должен возвращать то же разбиение на кластеры.
🤔2👍1
Forwarded from Data Funk
В своей работе "Теорема о невозможности кластеризации" Клейнберг доказывает что никакой алгоритм кластеризации не может удовлетворять одновременно трем названным условиям. Масштабная инвариантность нарушается когда для определения принадлежности точки к кластеру используются относительные расстояния с заданным порогом. Насыщенность нарушается, если заранее фиксируется количество кластеров. Согласованность нарушается когда для объединения точек в кластеры используются абсолютные расстояния не превышающие некоторый порог. С другой стороны указанные критерии это субъективное представление о красивом/полезном разбиении множества на группы, с которым необязательно соглашаться. Максимально понятно, без математики, теорема описана тут.
👍2