Документалка по котлину от команды подкаста мы обречены
https://youtu.be/E8CtE7qTb-Q
https://youtu.be/E8CtE7qTb-Q
YouTube
Beyond The Success Of Kotlin / The Documentary by EngX
Almost 15 years ago, a small engineering team at JetBrains embarked on what seemed like a crazy endeavor — to create their own programming language and succeed with it. In the early 2010s, Java was one of the most popular languages, used by millions of engineers.…
потестил tinygo, это такой альтернативный компилятор го с llvm бекендом, он отличается от основного тем что делает упор на размере бинаря и быстродействии, а не скорости компиляции, например через ескейп анализ определяются переменные которые можно не выделять на хипе.
к сожалению скорость компиляции ужасающая, 2.75 сек на хелло ворд, 800 мс на перезапуск только что скомпилированного, полное отключение оптимизаций(дефолт - size) особо ничего не меняет
нива которая делает roundtrip .niva -> .kotlin -> gradle -> jvm успевает отрабатывает за 1 сек с изменениями и теже 700-800 без изменений и это с учетом запуска этого хелло ворда
(рассматривал tinygo как альтернативный бекенд)
к сожалению скорость компиляции ужасающая, 2.75 сек на хелло ворд, 800 мс на перезапуск только что скомпилированного, полное отключение оптимизаций(дефолт - size) особо ничего не меняет
нива которая делает roundtrip .niva -> .kotlin -> gradle -> jvm успевает отрабатывает за 1 сек с изменениями и теже 700-800 без изменений и это с учетом запуска этого хелло ворда
(рассматривал tinygo как альтернативный бекенд)
👍1😢1
gavr_sas
с др меня! дата удобная легко запомнить)
др 911, 256 в году день порогромиста, пятница 13
хех
хех
Первая конфа очень интересного языка Unison состоится 20 сентября и полностью пройдет в дискорде, дешево и сердито.
Это такой Haskell с алгебраическими эффектами(что в 4352 раза удобнее чем выражать сайды монадами) и имаджем вместо текстовых файлов как в Smalltalk
Каждая AST нода генерализуется(все идентификаторы становятся чем то вроде цифр) и от нее берется хеш.
Таким образом 2 функции которые делают тоже самое, но допустим с разными названиями переменных и разным синтаксическим сахаром будут иметь одинаковый хеш
А теперь делаем следующее, в одной табличке храним хеши к реальным аст нодам, а во всех аст нодах используем эти хеши вместо реальных названий функций и типов
Получаем
1) мгновенный рефакторинг
2) возможность иметь пакеты разных версий в дереве зависимостей
3) отсутствие клеша по именам типов\функций
4) ОЧЕНЬ инкрементальную компиляцию, рекомпилить теперь надо буквально только то что изменилось
А теперь закидываем это в распределенную систему и получаем халявный продолжение в комм
#lang
Это такой Haskell с алгебраическими эффектами(что в 4352 раза удобнее чем выражать сайды монадами) и имаджем вместо текстовых файлов как в Smalltalk
Каждая AST нода генерализуется(все идентификаторы становятся чем то вроде цифр) и от нее берется хеш.
Таким образом 2 функции которые делают тоже самое, но допустим с разными названиями переменных и разным синтаксическим сахаром будут иметь одинаковый хеш
А теперь делаем следующее, в одной табличке храним хеши к реальным аст нодам, а во всех аст нодах используем эти хеши вместо реальных названий функций и типов
Получаем
1) мгновенный рефакторинг
2) возможность иметь пакеты разных версий в дереве зависимостей
3) отсутствие клеша по именам типов\функций
4) ОЧЕНЬ инкрементальную компиляцию, рекомпилить теперь надо буквально только то что изменилось
А теперь закидываем это в распределенную систему и получаем халявный продолжение в комм
#lang
🔥2
Почему у JVM медленный стартап тайм?
- до прогрева работает интерпретатор байткода
почти у каждого производителя жвма(IBM, Amazon, Oracle) была своя реализация AOT компиляции,
не помогло
- происходит чтение и парсинг всех .class файлов
Решили а шо если запарсить всю структуру зарание, задампать на диск и на старте просто прочитать готовенькое? class data sharing
не помогло
Что же еще там происходит на старте? Оказалось что огромное количество исполнения байткода статических инициализаторов всех стд классов например поднятие с диска всех локалей, датавремя, таймзоны
Даже если эту инициализацию скомпилировать статически это все равно медленно так как непредсказуемо
Проблему решили в GraalVM очень забавно, они просто этого не делают, да в обход спецификации, а когда первый раз понадобится таймзона, только статический инициализатор таймзон и запустят!
Авторы всех АОТ компиляторов кусают теперь локти что не додумались
А также начат Project Leyden по внедлению этой техники в стандарт, но уже с соблюдейнием спецификации https://openjdk.org/projects/leyden/
Можно скачать попробовать билд здесь https://jdk.java.net/leyden/
Так жаба-языки можно будет использовать для написания CLI тулзов и на edge компутинге заместь Go даже без GraalVM и других приседаний!
#JVM
- до прогрева работает интерпретатор байткода
почти у каждого производителя жвма(IBM, Amazon, Oracle) была своя реализация AOT компиляции,
не помогло
- происходит чтение и парсинг всех .class файлов
Решили а шо если запарсить всю структуру зарание, задампать на диск и на старте просто прочитать готовенькое? class data sharing
не помогло
Что же еще там происходит на старте? Оказалось что огромное количество исполнения байткода статических инициализаторов всех стд классов например поднятие с диска всех локалей, датавремя, таймзоны
Даже если эту инициализацию скомпилировать статически это все равно медленно так как непредсказуемо
Проблему решили в GraalVM очень забавно, они просто этого не делают, да в обход спецификации, а когда первый раз понадобится таймзона, только статический инициализатор таймзон и запустят!
Авторы всех АОТ компиляторов кусают теперь локти что не додумались
А также начат Project Leyden по внедлению этой техники в стандарт, но уже с соблюдейнием спецификации https://openjdk.org/projects/leyden/
Можно скачать попробовать билд здесь https://jdk.java.net/leyden/
Так жаба-языки можно будет использовать для написания CLI тулзов и на edge компутинге заместь Go даже без GraalVM и других приседаний!
#JVM
🤯2❤1
Forwarded from Denis Rangelov
Эксперименты Кэссиди Джеймса с акцентными цветами:
This media is not supported in your browser
VIEW IN TELEGRAM
👍1
Внимание! если магическим образом во сне поменять местами сознание и память двух людей, то проснувшись они заметят?
Anonymous Poll
67%
Да
33%
Нет
8%
Рассуждение в комментариях
лучший обзор fallout 1, если пережить крики в начале https://youtu.be/mLJ1gyIzg78
YouTube
Fallout 3 Is Garbage, And Here's Why
This is a review of Fallout 3, featuring retrospectives on the series as a whole, analysis of gameplay and storytelling mechanics, discussion of the games' initial critical reception, and the ability to absorb 1.5 hours of your human life right through the…