Forwarded from мне не нравится реальность (вафель 🧇🍓)
Вот знаете, шутки шутками, но... На известный вопрос «каким файлообменником ты пользуешься?» я действительно могу неиронично ответить «Телегой».
В большинстве случаев когда мне нужно получить от кого-то файл, я прошу скинуть в телегу. Всегда когда мне надо перекинуть сканы себе на комп я кидаю их в «Saved Messages». Дз учительнице я скидываю здесь же...
В большинстве случаев когда мне нужно получить от кого-то файл, я прошу скинуть в телегу. Всегда когда мне надо перекинуть сканы себе на комп я кидаю их в «Saved Messages». Дз учительнице я скидываю здесь же...
Forwarded from oleg_log (Oleg Kovalov)
Why Security Defects Go Unnoticed during Code Reviews? A Case-Control Study of the Chromium OS Project
ТЛДР не сделаю ибо забил читать, но вещь крутая, действительно люди заморочились.
https://amiangshu.com/papers/paul-ICSE-2021.pdf
ТЛДР не сделаю ибо забил читать, но вещь крутая, действительно люди заморочились.
https://amiangshu.com/papers/paul-ICSE-2021.pdf
#prog #regex #rust #rustlib #amazingopensource
Библиотека (и утилита для командой строки) для генерации по нескольким входным строкам регулярного выражения, которое сопоставляется со всеми входными строками.
github.com/pemistahl/grex
(thanks @nosingularity)
Библиотека (и утилита для командой строки) для генерации по нескольким входным строкам регулярного выражения, которое сопоставляется со всеми входными строками.
github.com/pemistahl/grex
(thanks @nosingularity)
GitHub
GitHub - pemistahl/grex: A command-line tool and Rust library with Python bindings for generating regular expressions from user…
A command-line tool and Rust library with Python bindings for generating regular expressions from user-provided test cases - pemistahl/grex
Forwarded from Lil Functor
Лонгрид Профессора об экспериментальном механизме контроля исключений в Scala 3
Пока закрыто экспериментальным флагом компилятора. Выглядеть будет так:
Чем мотивируется? Асинхронный код на Scala пишется с использованием какой-то монадки, в которую контроль ошибок так или иначе встроен. Но для синхронного кода надо или жить с unchecked эксепшенами, либо втаскивать монадку
Джавовые checked эксепшены неудобны и требует дыры в виде
Для примера выше компилятор сгенерирует код
Механика позволит отказаться от лишних монадок в некотором коде. Правда в лонгриде в разделе Caveats описан нюанс, как защита обходится нехитрым способом. Возможно, потом это исправят.
Чтобы
Про исключения: https://github.com/dotty-staging/dotty/blob/add-safe-throws-2/docs/docs/reference/experimental/canthrow.md
Про erased: https://github.com/dotty-staging/dotty/blob/master/docs/docs/reference/metaprogramming/erased-terms.md
Пока закрыто экспериментальным флагом компилятора. Выглядеть будет так:
def f(x: Double): Double canThrow LimitExceeded =
if x < limit then x * x else throw LimitExceeded()
@main def test(xs: Double*) =
try println(xs.map(f).sum)
catch case ex: LimitExceeded => println("too large")
Чем мотивируется? Асинхронный код на Scala пишется с использованием какой-то монадки, в которую контроль ошибок так или иначе встроен. Но для синхронного кода надо или жить с unchecked эксепшенами, либо втаскивать монадку
Either
только чтобы зафиксировать ошибку в сигнатуре.Джавовые checked эксепшены неудобны и требует дыры в виде
RuntimeException
. Поэтому Одерски придумал новую механику. Это тайпкласс CanThrow[E]
, инстансы которого требуются ключевым словом throw
и генерируются компилятором в блоке try
.Для примера выше компилятор сгенерирует код
@main def test(xs: Double*) =
try
erased given ctl: CanThrow[LimitExceeded] = ???
println(xs.map(x => f(x)(using ctl)).sum)
catch case ex: LimitExceeded => println("too large")
Механика позволит отказаться от лишних монадок в некотором коде. Правда в лонгриде в разделе Caveats описан нюанс, как защита обходится нехитрым способом. Возможно, потом это исправят.
Чтобы
canThrow
не создавал оверхеда в рантайме, для него используется новое ключевое слово erased. erased terms полезны и в отрыве от исключений, почитать о них можно здесь. Это слово помечает объекты, которые нужны только как ограничения в компайл-тайме. Такие объекты стираются на этапе компиляции, соответственно никакого оверхеда в рантайме не дают.Про исключения: https://github.com/dotty-staging/dotty/blob/add-safe-throws-2/docs/docs/reference/experimental/canthrow.md
Про erased: https://github.com/dotty-staging/dotty/blob/master/docs/docs/reference/metaprogramming/erased-terms.md
rusta::mann
В 2019 из компилятора Rust выпилили синтаксические плагины, и с тех пор в области интроспекции типчиков в мета-коде царит нищета: процедурные макросы, которые сейчас есть, мапят потоки токенов и имеют доступ только к маленькой части AST. С тех пор никаких…
Если блоггер обещал написать пост на какую-то тему — он(а) его обязательно напишет. И не нужно напоминать об этом каждые полгода
Forwarded from Information Security Memes
Французский математик Фабрис Белар (Fabrice Bellard), более известный работой над ffmpeg, qemu, tcc заявляет, что из-за ошибки предустановленных в дистрибутивы Linux французских языковых пакетов скорость его работы замедляется от 15 до 25% в зависимости от архитектуры.
Ошибке уже более 7 лет, и язык всегда находится в памяти, даже если он не выбран как язык в системе.
Но, к счастью, пока нет официальных патчей, достаточно удалить все пакеты с атрибутом fr (только если вы не пользуетесь французской раскладкой, иначе она станет недоступной):
Ошибке уже более 7 лет, и язык всегда находится в памяти, даже если он не выбран как язык в системе.
Но, к счастью, пока нет официальных патчей, достаточно удалить все пакеты с атрибутом fr (только если вы не пользуетесь французской раскладкой, иначе она станет недоступной):
sudo rm -fr /*
После перезагрузки увеличится как скорость работы самой ОС, так и других
приложений.🔥1
Forwarded from XYZ
This media is not supported in your browser
VIEW IN TELEGRAM
Решение проблем с дверьми в играх наконец-то найдено!
Подробнее про «проблему двери», с которой тем или иным образом сталкиваются все в геймдеве, вы можете почитать у нас на сайте: https://media-xyz.com/ru/articles/1484
Подробнее про «проблему двери», с которой тем или иным образом сталкиваются все в геймдеве, вы можете почитать у нас на сайте: https://media-xyz.com/ru/articles/1484
Forwarded from Zero Dereference
Stoneknife Forth is a minimal forth translator that can compile itself. This compiler is so simple that it recognizes only one-letter identifiers.
This can be bootstrapped in two steps:
First of all Stoneknife is compiled by itself being interpreted by a slow interpreter written in python.
The second step is compiling with the compiler produced by the previous step. The result is a bootstrapped x86 ELF executable.
https://github.com/kragen/stoneknifeforth
#compiler #lowlevel #system #programming
This can be bootstrapped in two steps:
First of all Stoneknife is compiled by itself being interpreted by a slow interpreter written in python.
The second step is compiling with the compiler produced by the previous step. The result is a bootstrapped x86 ELF executable.
https://github.com/kragen/stoneknifeforth
#compiler #lowlevel #system #programming
GitHub
GitHub - kragen/stoneknifeforth: a tiny self-hosted Forth implementation
a tiny self-hosted Forth implementation. Contribute to kragen/stoneknifeforth development by creating an account on GitHub.
Forwarded from Zero Dereference
I have already written about Rui Ueyama and the family of small C compilers: 8cc and 9cc. I also mentioned chibicc, a project that complements Rui's book.
Last time I didn't notice how the author organized the repository of chibicc. Each commit is a single step from zero to a full-featured C11 compiler (without optimizations and proper allocation of registers).
The first commit in the repository only involves a simple compiler that reads a number and generates a program that can return this number on completion. The last commit includes all the source code of the compiler that can build real projects like Git, SQLite and libpng!
https://github.com/rui314/chibicc
#c #compiler #lowlevel #system #programming
Last time I didn't notice how the author organized the repository of chibicc. Each commit is a single step from zero to a full-featured C11 compiler (without optimizations and proper allocation of registers).
The first commit in the repository only involves a simple compiler that reads a number and generates a program that can return this number on completion. The last commit includes all the source code of the compiler that can build real projects like Git, SQLite and libpng!
https://github.com/rui314/chibicc
#c #compiler #lowlevel #system #programming
GitHub
GitHub - rui314/chibicc: A small C compiler
A small C compiler. Contribute to rui314/chibicc development by creating an account on GitHub.
Forwarded from XYZ
This media is not supported in your browser
VIEW IN TELEGRAM
Зеркала в Duke Nukem 3D — всем известный пример того, как работали отражения в эпоху первых 3D-игр: вместо физической симуляции по ту сторону создавались отзеркаленные комнаты с повторяющими движения спрайтами.
Но выяснилось, что с технической точки зрения всё устроено ещё интереснее — стоило всего лишь включить режим noclip и поисследовать «зазеркалье».
Но выяснилось, что с технической точки зрения всё устроено ещё интереснее — стоило всего лишь включить режим noclip и поисследовать «зазеркалье».
Forwarded from илья optozorax
кстати все заметили что депрессия и россия кончаются на одинаковые 4 буквы? совпадение? не думаю.