Над Kotlin сейчас угрожающе нависает такой вот KEEP-87. Если в двух словах, то эта штука про расширения и про контракты. Тут можно почитать оригинальный proposal. А тут можно посмотреть менее длинное и более простое описание.
#kotlin #keep
#kotlin #keep
GitHub
KEEP/proposals/compile-time-dependency-resolution.md at da6a2744f343927d90682d0ecafd223bf3755e0a · Kotlin/KEEP
Kotlin Evolution and Enhancement Process. Contribute to Kotlin/KEEP development by creating an account on GitHub.
А ещё @themishkun прислал ссылку на вот такой KEEP-176 про multiple receiver extension.
#kotlin #keep
#kotlin #keep
GitHub
Compound extension by chuckjaz · Pull Request #176 · Kotlin/KEEP
A compound extension proposal as discussed here: https://discuss.kotlinlang.org/t/compound-extension/10722
И ещё немного про Reactive Streams и подход к дизайну Flow от Ромы нашего Елизарова.
#kotlin #flow #coroutine
#kotlin #flow #coroutine
Medium
Reactive Streams and Kotlin Flows
Kotlin Flows build on the foundation of Reactive Extensions and Reactive Streams with a flavor of Kotlin Coroutines.
@etolstoy прислал нам с вами опрос Kotlin Census 2019. Он достаточно большой, у меня ушло минут ~20. Но дорогу осилит идущий, как говорится :)
#survey #kotlin
#survey #kotlin
Jetbrains
Kotlin Census 2019
Kotlin Census 2019.
@Jacks0n23 снова приглашает всех на Android meetup по Zoom 8 апреля в 19:00. Обещают два доклада про бинарную совместимость. Кстати, один из докладов делает @lounvh - его мы знаем по Shitty Android PeerLab. Вписывайтесь!
#event #kotlin #binary
#event #kotlin #binary
Т-Банк Митапы
Митап Tinkoff IT Weekly #1. Android
Еженедельные встречи экспертов, разбор реальных кейсов, советы по выживанию. it’s Tinkoff выходит в онлайн.
Бывает, несёшь себе кофеёк к компу. Путь пролегает не самый близкий - покинуть кухню, преодолеть коридор, крадучись занести кружку в комнату, не обосрав тот любимый белый ковёр, и водрузить, наконец, дрожащими руками заветный напиток на рабочий стол.
А тут, на тебе, в коридоре, прямо под ногами, песок какой-то. Ясное дело, подставил кто-то. Гады. Ну ты-то не мог, ты-то ногами об коврик пошаркал, когда с прогулки возвращался. Сволочи. А кофе-то запахом манит. Да и пролить не хочется, они от нас только этого и ждут, Бубба.
Тут ты и принимаешь стратегическое решение аккуратненько ножкой так ать, и смести песок куда-то в сторону. Пусть это будет проблема выходного тебя.
Вот так и с сайд-эффектами, всё время их диверсанты какие-то в наш чудесный код добавляют. Но хочется же их аккуратненько куда-то под коврик замести, и чтобы только там они где-то и водились, и не отсвечивали, пока не позовут. И чтобы нельзя было ими наши замечательные чистые функции попортить.
Вот в этом посте смотрят на использование
#kotlin #coroutine #fp
А тут, на тебе, в коридоре, прямо под ногами, песок какой-то. Ясное дело, подставил кто-то. Гады. Ну ты-то не мог, ты-то ногами об коврик пошаркал, когда с прогулки возвращался. Сволочи. А кофе-то запахом манит. Да и пролить не хочется, они от нас только этого и ждут, Бубба.
Тут ты и принимаешь стратегическое решение аккуратненько ножкой так ать, и смести песок куда-то в сторону. Пусть это будет проблема выходного тебя.
Вот так и с сайд-эффектами, всё время их диверсанты какие-то в наш чудесный код добавляют. Но хочется же их аккуратненько куда-то под коврик замести, и чтобы только там они где-то и водились, и не отсвечивали, пока не позовут. И чтобы нельзя было ими наши замечательные чистые функции попортить.
Вот в этом посте смотрят на использование
suspend
модификатора для этих целей. Интересная идея, пометить всё, у чего есть сайд-эффекты, тогда компилятор не даст нам чистые куски запятнать. Особенно интересно в контексте Redux-like подходов на эту идею посмотреть.#kotlin #coroutine #fp
👨💻 Jorge Castillo
Tracking side effects at compile time with suspend
Thinking of suspend as a Kotlin stdlib mechanism for flagging and tracking effects at compile time. Going declarative Functional Programming puts a lot of emphasis on achieving concern separation between the pure logics of a program (algebras) and the runtime…
С Kotlin 1.4.30 в бетку перешёл новый JVM IR бэкенд компилятора. И вот за этим самым бэкендом будущее. Он станет дефолтным с Kotlin 1.5, да и старый компилятор больше не будет развиваться.
И вот Команда Kotlin Компилятора (или Ко-Ко-Ко, как их ласково называют в народе), просит помочь им с тестированием. Нужно убедиться, что новый бэкенд действительно достаточно стабилен для публичного релиза.
Собственно, как помочь?
- Включить новый компилятор в своём конфиг файле и собрать проект хотя бы один раз
- В идеале - включить новый компилятор для своего поекта по умолчанию, потому что не только сборка, но и дебаг имеют значение для этого теста
- Любые найденные баги нужно репортить сюда
- Ну и можно репортить в публичный Kotlin Slack
#kotlin #compiler #test
И вот Команда Kotlin Компилятора (или Ко-Ко-Ко, как их ласково называют в народе), просит помочь им с тестированием. Нужно убедиться, что новый бэкенд действительно достаточно стабилен для публичного релиза.
Собственно, как помочь?
- Включить новый компилятор в своём конфиг файле и собрать проект хотя бы один раз
- В идеале - включить новый компилятор для своего поекта по умолчанию, потому что не только сборка, но и дебаг имеют значение для этого теста
- Любые найденные баги нужно репортить сюда
- Ну и можно репортить в публичный Kotlin Slack
#kotlin #compiler #test
Очень приятная новость: JetBrains показали kotlin interactive shell (назвали почему-то ki, а не kish. А как здорово бы могло быть, ребята! Пишешь себе в терминальчике КиШ, "И ты попала! К настоящему колдуну, Он загубил таких как ты, не одну!")
Но штука прикольная, и в автокомплит умеет, и в раскраску синтаксиса, и в импорт сторонних зависимостей. У меня иногда возникает необходимость проверить что-то на простом примере, когда дока не пишет явно про какой-то корнер-кейс. Раньше ходил в браузере к ним в песочницу, теперь буду ходить в терминальчик.
#kotlin #shell #terminal
Но штука прикольная, и в автокомплит умеет, и в раскраску синтаксиса, и в импорт сторонних зависимостей. У меня иногда возникает необходимость проверить что-то на простом примере, когда дока не пишет явно про какой-то корнер-кейс. Раньше ходил в браузере к ним в песочницу, теперь буду ходить в терминальчик.
#kotlin #shell #terminal
The JetBrains Blog
ki: The Next Interactive Shell for Kotlin | The Kotlin Blog
There are several options to run Kotlin interactively: kotlinc and Kotlin REPL (read-evaluate-print loop) in IntelliJ IDEA. Neither is ideal. kotlinc does not have autocomplete or syntax highlighting.
Очень давно в Kotlin напрашивались непустые коллекции. Вот в этом посте как раз описывается, как к их написанию можно подойти.
Мне правда не нравится идея с unsafe area. По-моему оператор, который может уменьшить кол-во элементов в коллекции, при любом раскладе должен возвращать обычную, а не непустую коллекцию, потому что именно этот тип верно описывает ситуацию.
#kotlin #collections
Мне правда не нравится идея с unsafe area. По-моему оператор, который может уменьшить кол-во элементов в коллекции, при любом раскладе должен возвращать обычную, а не непустую коллекцию, потому что именно этот тип верно описывает ситуацию.
#kotlin #collections
QuickBird Studios
Non-Empty Lists in Kotlin
No-one likes to open an empty box! We use non-empty lists and collections in Kotlin to avoid such unpleasant surprises by design.
Показывать явно в возвращаемом типе, что функция может завершиться ошибкой, - идея не новая, хоть и всё ещё не заезженная. В этом посте чувак показывает, как такую Result monad можно на Kotlin написать. Реализация там, на мой взгляд, не во всём удачна (ну в какой, скажите, вселенной,
#fp #monad #kotlin
val reason: String
достаточно для описания ошибки?), но достаточно хороша. #fp #monad #kotlin
Medium
And the Result is a monad
Adding superpowers to a custom type
В этот раз ссылка немного странная: тут нашёлся репо с пачкой ссылок, которые, в теории, помогут углубиться в то, как работает этот наш 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
Тут вот очень базовый пост про написание своего detekt правила. Обычно мне такие примитивные примеры не нравятся (всё, что там делают, это проверяют текст функции на наличие определённой подстроки), но в случае с анализаторами именно такие супер-простые правила зачастую превращают условные 20% усилий в условные же 80% результата, а это всегда очень приятно.
#detekt #lint #kotlin
#detekt #lint #kotlin
Хабр
Detekt — пишем свои правила
Мы в «Ситимобил», используем статический анализатор кода Detekt. Это инструмент, который при запуске проходит по проекту и показывает допущенные в коде code smell. И самостоятельно исправляет...
Ох, сколько же всего я не знаю. Алгоритм Sleep sort, например. На массив размера N заводим N тасок, которые сделают emit элементу после некоторого delay, соответствующему ключу сортировки. Дожидаемся всех emit'ов и опа, отсортировали.
#humor #algorithm #sorting
#humor #algorithm #sorting
Ну шо, уважаемые люди говорят, Kotlin 1.7.0 вышел. Ощущается скорее как промежуточный релиз с улучшениями, но предложу пофантазировать в комментариях, куда нас может завести
#kotlin #language
T & Any
синтаксис в дженериках.#kotlin #language
Kotlin Help
What's new in Kotlin 1.7.0 | Kotlin
Тут совсем коротко: чувак рассказывает, как реюзать код для Gradle Kotlin DSL. Оно просто и понятно делается в Groovy, тут чуть сложнее.
#gradle #kotlin #build
#gradle #kotlin #build
Eugene Petrenko
Gradle Kotlin DSL - Code Reuse -- Eugene Petrenko
How to reuse code between several gradle.kts files with accessors
Про типы, типа. Чтобы волосы были гладкими и шелковистыми. Ничего радикально нового, просто пост хороший.
#type #kotlin
#type #kotlin
kt.academy
Type modelling in Kotlin
Type safety is undervalued in most software projects and causes enormous financial losses throughout the world. Changing a few bad habits can lead to more reliable software.
Блэт, ну вот теперь мы знаем, что на Kotlin можно и такое вот дерьмо накидать, и оно даже будет валидно.
#humor #kotlin
#humor #kotlin