Раз уж тут так много новых людей — и особенно много тех, с кем я совершенно не знаком — пожалуй, стоит рассказать немного о себе и об этом канале.
Меня зовут Антон, ястудент человек студенческого возраста и в настоящий момент я работаю программистом, по работе пишу в основном... Да, на Rust, а как вы догадались? Я люблю Rust и ненавижу примерно все остальные языки программирования. Круг моих интересов относительно широк, но на канал изливается в основном программирование (серьёзно, около половины постов с хештегом #prog). Этот канал изначально планировался как удобная свалка ссылок, материалов и #meme-ов, и... Он таковым, в сущности, и остался. В своё оправдание я могу сказать, что все статьи (выкладываемые с хештегом #article) я всегда читаю перед тем, как выложить, так что делюсь я тем, что считаю стоящим своей аудитории.
Также ведение своего канала сподвигнуло меня на написание своих постов (и иногда даже перевод чужих статей), которые я выкладываю под хештегом #моё (как, впрочем, и созданные мною мемы). В их числе я хотел бы отметить:
- написание трейта, гарантирующего нулевой размер типа
- оптимизация размера итератора из стандартной библиотеки Rust (увы, не принятая)
- реализация zero-cost форматировщиков даты
- разбор различных способ реализации полиморфизма, с их достоинствами и недостатками
- эпические "Хроники замыканий" в 3 (пока что) частях: раз, два, три
- деликатный и глубокий анализ недостатков регулярных выражений
Для удобства привожу список всех хештегов на канале (может быть пополнен в будущем):
#3dcg
#abnormalprogramming
#algo
#amazingopensource
#anime
#art
#article
#bash
#bio
#blogrecommendation
#c
#cinema
#clojure
#cpp
#csharp
#db
#demoscene
#design
#dotnet
#erlang
#game
#go
#idris
#itsec
#haskell
#js
#java
#julia
#justrustaceanthings
#kbd
#life
#math
#mechanics
#meme
#menacingopensource
#ml
#mood
#music
#outoflinestorage
#parsing
#performancetrap
#php
#pixelart
#politota
#postgresql
#prog
#psy
#puzzle
#python
#quotes
#regex
#retroit
#r
#rust
#rustasync
#rustforlinux
#rustreleasenotes
#rustlib
#scala
#science
#serde
#shell
#soc
#softskills
#sql
#successstory
#suckassstory
#tips
#typescript
#video
#web
#zig
#бомбёжкипост
#культурнаяпрограмма
#лингво
#моё
#право
#трудовыебудни
Ну и традиционно — лайки, колокольчик, рассказывайте друзьям, бла бла бла, ну, вы знаете, как это обычно выглядит. Ну и раз уж я пока не могу поприветствовать каждого лично, я поприветствую всех новоприбывших скопом:
Добро пожаловать на канал!
Меня зовут Антон, я
Также ведение своего канала сподвигнуло меня на написание своих постов (и иногда даже перевод чужих статей), которые я выкладываю под хештегом #моё (как, впрочем, и созданные мною мемы). В их числе я хотел бы отметить:
- написание трейта, гарантирующего нулевой размер типа
- оптимизация размера итератора из стандартной библиотеки Rust (увы, не принятая)
- реализация zero-cost форматировщиков даты
- разбор различных способ реализации полиморфизма, с их достоинствами и недостатками
- эпические "Хроники замыканий" в 3 (пока что) частях: раз, два, три
- деликатный и глубокий анализ недостатков регулярных выражений
Для удобства привожу список всех хештегов на канале (может быть пополнен в будущем):
#3dcg
#abnormalprogramming
#algo
#amazingopensource
#anime
#art
#article
#bash
#bio
#blogrecommendation
#c
#cinema
#clojure
#cpp
#csharp
#db
#demoscene
#design
#dotnet
#erlang
#game
#go
#idris
#itsec
#haskell
#js
#java
#julia
#justrustaceanthings
#kbd
#life
#math
#mechanics
#meme
#menacingopensource
#ml
#mood
#music
#outoflinestorage
#parsing
#performancetrap
#php
#pixelart
#politota
#postgresql
#prog
#psy
#puzzle
#python
#quotes
#regex
#retroit
#r
#rust
#rustasync
#rustforlinux
#rustreleasenotes
#rustlib
#scala
#science
#serde
#shell
#soc
#softskills
#sql
#successstory
#suckassstory
#tips
#typescript
#video
#web
#zig
#бомбёжкипост
#культурнаяпрограмма
#лингво
#моё
#право
#трудовыебудни
Ну и традиционно — лайки, колокольчик, рассказывайте друзьям, бла бла бла, ну, вы знаете, как это обычно выглядит. Ну и раз уж я пока не могу поприветствовать каждого лично, я поприветствую всех новоприбывших скопом:
Добро пожаловать на канал!
Telegram
Блог*
#prog #rust #article #моё
Как я и обещал, я... Так, погодите, я не писал об этом в блоге? Впрочем, ладно, напишу сейчас: я планировал написать перевод этой статьи и выложить его на Хабре. Собственно, сегодня я это и сделал.
Как я и обещал, я... Так, погодите, я не писал об этом в блоге? Впрочем, ладно, напишу сейчас: я планировал написать перевод этой статьи и выложить его на Хабре. Собственно, сегодня я это и сделал.
👍8🤮1💩1🤡1
Блог*
#prog #rust #dotnet #abnormalprogramming Compiling Rust for .NET, using only tea and stubbornness!
#prog #rust #dotnet #article
Автор продолжил заниматься своим проектом и планирует превратить его в полноценный бекенд для кодогенерации. С момента выпуска Compiling Rust for .NET, using only tea and stubbornness! автор опубликовал три заметки, рассказывающие о прогрессе имплементации:
Enumerating over Generics — рассказывает о том, как
Надо отметить, что сумм-типы есть и в F#, который также транслируется в CIL, но там отличается подход к реализации: сумм-типы всегда хранят все поля всех вариантов. Автор же определяет вложенные структуры для каждого варианта перечисления и хранит в сгенерированном коде дискриминант, а также все варианты с одним смещением от начала структуры — фактически, реимплементация паттерна tagged union.
Mixing C# and Rust - Interop — рассказывает о реализуемой автором библиотеке mycorrhiza для интеропа между Rust и C#. Показывает прекрасный пример, когда пригождаются
Mischievous miscompilations — рассказывает о нюансах перевода из MIR в CIL. Задача сложна тем, что MIR — это IR в SSA, не завязанный на конкретную архитектуру процессора, в то время как CIL является ассемблером для стековой машины. Дополнительные сложности также возникают из-за контекстной зависимости семантики инструкций CIL.
Автор продолжил заниматься своим проектом и планирует превратить его в полноценный бекенд для кодогенерации. С момента выпуска Compiling Rust for .NET, using only tea and stubbornness! автор опубликовал три заметки, рассказывающие о прогрессе имплементации:
Enumerating over Generics — рассказывает о том, как
enum
и дженерики из Rust транслируются в CIL. Автор решил реализовать дженерики Rust как дженерики C# (т. е. без мономорфизации на этапе компиляции). Важная вещь, потому как без этого нельзя скомпилировать никакой из циклов for
в Rust.Надо отметить, что сумм-типы есть и в F#, который также транслируется в CIL, но там отличается подход к реализации: сумм-типы всегда хранят все поля всех вариантов. Автор же определяет вложенные структуры для каждого варианта перечисления и хранит в сгенерированном коде дискриминант, а также все варианты с одним смещением от начала структуры — фактически, реимплементация паттерна tagged union.
Mixing C# and Rust - Interop — рассказывает о реализуемой автором библиотеке mycorrhiza для интеропа между Rust и C#. Показывает прекрасный пример, когда пригождаются
&str
в const generics. В настоящий момент открытая проблема — как предотвратить утекание ссылок на управляемую кучу в неуправляемую кучу.Mischievous miscompilations — рассказывает о нюансах перевода из MIR в CIL. Задача сложна тем, что MIR — это IR в SSA, не завязанный на конкретную архитектуру процессора, в то время как CIL является ассемблером для стековой машины. Дополнительные сложности также возникают из-за контекстной зависимости семантики инструкций CIL.
❤6
Блог*
#prog #rust #dotnet #article Автор продолжил заниматься своим проектом и планирует превратить его в полноценный бекенд для кодогенерации. С момента выпуска Compiling Rust for .NET, using only tea and stubbornness! автор опубликовал три заметки, рассказывающие…
#prog #rust #dotnet
Компилятор из Rust в .NET достиг состояния, когда он может скомпилировать guessing game.
old.reddit.com/r/rust/comments/1db8vmg/media_the_rust_to_net_compiler_backend_can_now/
Компилятор из Rust в .NET достиг состояния, когда он может скомпилировать guessing game.
old.reddit.com/r/rust/comments/1db8vmg/media_the_rust_to_net_compiler_backend_can_now/
🔥7😁4
Блог*
#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 лет. Автор также…
#prog #rust #dotnet #article
Rust panics under the hood, and implementing them in .NET
Или немного о том, почему наивная трансляция раскрутки стека в исключения .NET в некоторых случаях вызывала замедление на порядок.
Rust panics under the hood, and implementing them in .NET
Или немного о том, почему наивная трансляция раскрутки стека в исключения .NET в некоторых случаях вызывала замедление на порядок.
👍1