Вот тут очень здорово рассказывают, как работает оптимизация хвостовой рекурсии (tail call optimization / TCO). Surprise-surprise, она вполне хорошо применяется и к обычным функциям с вызовом функции и
#compiler #optimize #recursion
return
в конце.#compiler #optimize #recursion
eklitzke.org
How Tail Call Optimization Works
С Kotlin 1.4.30 в бетку перешёл новый JVM IR бэкенд компилятора. И вот за этим самым бэкендом будущее. Он станет дефолтным с Kotlin 1.5, да и старый компилятор больше не будет развиваться.
И вот Команда Kotlin Компилятора (или Ко-Ко-Ко, как их ласково называют в народе), просит помочь им с тестированием. Нужно убедиться, что новый бэкенд действительно достаточно стабилен для публичного релиза.
Собственно, как помочь?
- Включить новый компилятор в своём конфиг файле и собрать проект хотя бы один раз
- В идеале - включить новый компилятор для своего поекта по умолчанию, потому что не только сборка, но и дебаг имеют значение для этого теста
- Любые найденные баги нужно репортить сюда
- Ну и можно репортить в публичный Kotlin Slack
#kotlin #compiler #test
И вот Команда Kotlin Компилятора (или Ко-Ко-Ко, как их ласково называют в народе), просит помочь им с тестированием. Нужно убедиться, что новый бэкенд действительно достаточно стабилен для публичного релиза.
Собственно, как помочь?
- Включить новый компилятор в своём конфиг файле и собрать проект хотя бы один раз
- В идеале - включить новый компилятор для своего поекта по умолчанию, потому что не только сборка, но и дебаг имеют значение для этого теста
- Любые найденные баги нужно репортить сюда
- Ну и можно репортить в публичный Kotlin Slack
#kotlin #compiler #test
В этот раз ссылка немного странная: тут нашёлся репо с пачкой ссылок, которые, в теории, помогут углубиться в то, как работает этот наш Kotlin компилятор. Может быть однажды и пригодится, как знать.
#kotlin #compiler
#kotlin #compiler
GitHub
GitHub - ahinchman1/Kotlin-Compiler-Crash-Course: A repository of helpful sources to figure out what the Kotlin compiler really…
A repository of helpful sources to figure out what the Kotlin compiler really is - ahinchman1/Kotlin-Compiler-Crash-Course
А тут вот Arrow показали свой Analysis. Типа такой умный линтер, который построен как плагин для Kotlin компилятора, и умеет анализировать флоу кода, чтобы более глубокие вещи обнаруживать.
#lint #compiler #plugin
#lint #compiler #plugin
47 Degrees
Announcing Arrow Analysis - a Kotlin compiler plug-in | 47 Degrees
Arrow Analysis is a Kotlin compiler plug-in that supercharges your compilation plugin with new checks to make your code safer and more robust.
👍4🤔2
Сначала они говорят тебе, что читать ассемблер просто. И потом они же тебе говорят, что
- Регистр
-
-
-
-
- Запись работает, как и ожидается, но запись в
- Регистров есть много разных, например,
- (╯°□°)╯︵ ┻━┻
#cpu #assembler #compiler
- Регистр
RAX
- 64 бита-
EAX
- младшие 32 бита RAX
-
AX
- младшие 16 бит RAX
-
AL
- младшие 8 бит RAX
-
AH
- старшие 8 бит AX
- Запись работает, как и ожидается, но запись в
EAX
занулит остальную часть RAX
- Регистров есть много разных, например,
RAX
, RCX
, RDX
, RBX
. Да-да, не ABCD, а ACDB, именно в таком порядке они хранятся- (╯°□°)╯︵ ┻━┻
#cpu #assembler #compiler
TimDbg
The faker's guide to reading (x86) assembly language
Assembly code scares people. There’s a good reason for that. For many people, writing code in assembly language seems equivalent to writing code in ancient dwarven runes, or calculating pi in roman numerals. The fact that RollerCoaster Tycoon was almost completely…
🤯5🤨2❤1😁1😐1
Попался занимательный пример того, на что в целом способны современные компиляторы, но что не доходит до мейнстримных языков. Речь пойдёт про язык Dafny, который умеет доказывать или опровергать в compile time своего рода ассёрты, которые мы разбрасываем по своему коду.
#compiler #language #cs
#compiler #language #cs
👍2
Пусть старый, но не ставший от этого менее интересным разбор реализации Go интерфейсов в gc компиляторах.
#go #interface #compiler
#go #interface #compiler
Прикольно, чел хотел написать бесконечный цикл, но только чтобы оптимизирующий компилятор этого не понял. Для этого он взял частный случай великой теоремы Ферма, и сильно удивился, когда некоторые компиляторы её «опровергли» и успешно цикл оптимизировали.
#compiler #c #optimize
#compiler #c #optimize
😁2
Небольшой обзор забавного c4 - компилятор C, уместившийся в 4 функции, который на самом деле и компилирует в байт-код, и интерпретирует его.
#c #compiler
#c #compiler
😱4👍3
Заблуждения разработчиков о NULL указателях. Именно об указателях. Не те NullPointerException, к которым мы с вами привыкли. Читая всё это, немного стареешь внутри.
#c #memory #compiler
#c #memory #compiler
purplesyringa's blog
Falsehoods programmers believe about null pointers
Null pointers look simple on the surface, and that’s why they’re so dangerous. As compiler optimizations, intuitive but incorrect simplifications, and platform-specific quirks have piled on, the odds of making a wrong assumption have increased, leading to…
Тут забавное: компилятор и тулинг TypeScript переписывают на Go и всё сразу 10x зацвело и запахло. Но почему же не Rust? Так бы все 11x получили! Да ещё бы и "написано на расте" могли бы нацепить!
#ts #go #compiler
#ts #go #compiler
Microsoft News
A 10x Faster TypeScript
Embarking on a native port of the existing TypeScript compiler and toolset to achieve a 10x performance speed-up.
👍2😁2