Блог*
#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
#prog #rust хайлайты:
Поменяли реализацию сортировки. Те же гарантии по сложности, та же или более хорошая производительность (в зависимости от типа), а самое заметное — новая сортировка теперь может (пусть и не гарантированно) отлавливать случаи, когда реализация Ord на самом деле не реализует отношение порядка, и сообщать об этом через панику с соответствующим сообщением.
Также уменьшает объём генерируемого кода для нестабильной сортировки, увеличивает для стабильной и за счёт организации кода быстрее компилируется на многоядерных системах.
Поменяли реализацию сортировки. Те же гарантии по сложности, та же или более хорошая производительность (в зависимости от типа), а самое заметное — новая сортировка теперь может (пусть и не гарантированно) отлавливать случаи, когда реализация Ord на самом деле не реализует отношение порядка, и сообщать об этом через панику с соответствующим сообщением.
Также уменьшает объём генерируемого кода для нестабильной сортировки, увеличивает для стабильной и за счёт организации кода быстрее компилируется на многоядерных системах.
GitHub
Replace sort implementations by Voultapher · Pull Request #124032 · rust-lang/rust
This PR replaces the sort implementations with tailor-made ones that strike a balance of run-time, compile-time and binary-size, yielding run-time and compile-time improvements. Regressing binary-s...
🔥16👍1
Я не пользуюсь тиндером.
Мне и так знакомо, каково это, когда люди тебе не отвечают
Мне и так знакомо, каково это, когда люди тебе не отвечают
👍3😢1
Я не выкладываю селфи. Не хочу, чтобы мои папищеки влюблялись и страдали от неразделённой любви.
🤡18😁9💩6❤🔥3🤮2🍌2🤨1
#prog #article
Adventures in CI land, or how to speed up your CI
Большинство описанного в статье не привязано к конкретному языку.
Adventures in CI land, or how to speed up your CI
Большинство описанного в статье не привязано к конкретному языку.
👍3👎2