KEEP
kotlinx.coroutines
Our great sponsors
KEEP | kotlinx.coroutines | |
---|---|---|
59 | 59 | |
3,132 | 12,255 | |
1.5% | 1.1% | |
0.0 | 0.0 | |
16 days ago | 6 days ago | |
Markdown | Kotlin | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
KEEP
-
Unchecked Java: Say Goodbye to Checked Exceptions Forever
Most other languages agree that checked exceptions are not good by not having them.
As for alternatives, Try/Result and similar monads have decent adoption even in Java, but personally I quite like the Kotlin philosophy [1] to not have generic error containers and either use runtime exceptions or make failures of the return type.
[1] https://github.com/Kotlin/KEEP/blob/master/proposals/stdlib/...
- Is runCatching in use in any of your projects ? My team is abusing it
-
More on OOP: Polymorphism this time
The nitty-gritty is in the KEEP. They show in the end how they considered to add type classes, and then discarded the idea.
-
Making Lenses Practical in Java
Lenses work today. And I think the value class feature will be awesome.
https://github.com/Kotlin/KEEP/blob/master/notes/value-class...
-
Adding Coeffect System to Java with Project Loom
Seems like Kotlin Context Receivers then (https://github.com/Kotlin/KEEP/blob/master/proposals/context-receivers.md).
-
Rust: A Critical Retrospective
Kotlin has value classes. Here's a good overview of how they work in Kotlin: https://github.com/Kotlin/KEEP/blob/master/notes/value-class...
That document is a few years old now and was intended as a design document. But Value classes shipped with Kotlin 1.5. Apparently they are compatible with the project Valhalla value objects that will be added to the JVM at some point. So, this stuff is coming.
I had to look it up because even though I write Kotlin a lot, value classes are not something I have used at all. Looks useful but not that big of a deal and doesn't really solve a problem I have. Data classes and records (in Java) are a bigger deal IMHO.
In practice, the way you deal with immutability in Kotlin is to keep most of your data structures immutable by default unless they need to be mutable. E.g. there's a List and a MutableList interface. Most lists are immutable unless you create a MutableList. Same with val vs. var variables. Val variables can't be reassigned and you kind of use var only by exception when you really have to. The compiler will actually warn you if you do it without good reason. A data class with only vals can't be modified. Java is a bit more sloppy when it comes to mutability semantics. It has records now but all the fields have setters by default. It has var but no val assignments (you can use final to force this but few people do). And so on.
Semantically this is not as strong as what Rust does of course but it's good enough to make e.g. concurrency a lot easier. Mostly, if you avoid having a lot of mutable shared state, that becomes a lot easier.
You could imagine a Kotlin like language with much stronger semantics implementing borrow checking instead of garbage collection. It wouldn't be the same language of course but I don't think it needs to be very different. Using it would not be a massively different.
-
Java record pattern matching in JDK 19
I'd be very interested in a comparison between scala 3 using/given and Kotlin new context receivers https://github.com/Kotlin/KEEP/blob/master/proposals/context...
- Why no one recommends the use of the standard library's Result class but a custom sealed class approach?
-
[Question][Kotlin] Dexter Runtime Permissions development has stopped, whats the alternative?
This will be furthermore simplified with multiple receivers coming very soon
-
Java 20 looks like it may be one of the biggest updates in years
Tfw no pattern matching. :(
kotlinx.coroutines
-
Reactive Backend Applications with Spring Boot, Kotlin and Coroutines (Part 2)
Kotlin has coroutines that are supported by the language and implemented by a library (the implementation remains platform-dependent): kotlinx.coroutines and a sandbox environment is available here to try it out.
- Kotlinx Coroutines for Kotlin 1.7.x
-
Why no one recommends the use of the standard library's Result class but a custom sealed class approach?
Sure! runCatching catches Throwable right? Well when you cancel a coroutine it throws a CancellationException and this gets used as a signal to stop execution. runCatching stops that signal so the coroutine keeps running. Lemme find you a link real quick https://github.com/Kotlin/kotlinx.coroutines/issues/1814
-
Is there thread switching when moving from Default dispatcher to IO dispatcher using withContext?
According to the author of kotlinx.coroutines lib, it will try to keep the same thread if possible but not always. After my question, he updated the document of Dispatchers.IO to be like this https://github.com/Kotlin/kotlinx.coroutines/pull/3236/files This dispatcher and its views share threads with the [Default][Dispatchers.Default] dispatcher, so using `withContext(Dispatchers.IO) { ... }` when already running on the [Default][Dispatchers.Default] dispatcher typically does not lead to an actual switching to another thread. In such scenarios, the underlying implementation attempts to keep the execution on the same thread on a best-effort basis.
I think it is a great question and you can ask it on github
This is the issue I posted in GitHub https://github.com/Kotlin/kotlinx.coroutines/issues/3234 Thank you for the suggestion
-
Am I on the right track?
DI: Dependency injection: Check out Dagger Hilt, Koin or Kodine. Architecture: Android tends to be MVVM but, MVP, MVI and some others exist. Async calls: For kotlin, coroutines. Rxjava can be used with kotlin or java. I'm not actually sure how java devs do asyn calls these days.
-
Build, Test and Deploy your Android Application📱 with GitHub Actions 🤖
Kotlin based, Coroutines + Flow for asynchronous.
-
Java Virtual Threads Preview
Interestingly, Kotlin Coroutines have been available and in production for a LONG time now.
https://github.com/Kotlin/kotlinx.coroutines
In fact, Kotlin Coroutines are an brilliant on the android platform. We are talking severely memory and CPU constrained architectures here.
That said, Kotlin Coroutines are popularly used in production on server side - https://vertx.io/docs/vertx-lang-kotlin-coroutines/kotlin/
So here's the thing - I would doubt anyone would switch to Java Virtual Threads anytime soon.
-
Need Help Testing Callback Style Code with Coroutines
Anyways, it seems like it's a common enough issue that it is getting the attention of the kotlin team. I have high hopes for this PR that looks like it might be close to merging, and has activity within the last couple of days.
What are some alternatives?
kotlin - The Kotlin Programming Language.
kotlin-coroutines - Examples for coroutines design in Kotlin
compose-multiplatform - Compose Multiplatform, a modern UI framework for Kotlin that makes building performant and beautiful user interfaces easy and enjoyable.
okio - A modern I/O library for Android, Java, and Kotlin Multiplatform.
KorGE - KorGE Game Engine. Multiplatform Kotlin Game Engine & Korlibs
spring-native - Spring Native is now superseded by Spring Boot 3 official native support
korim - Korim: Kotlin cORoutines IMaging, Bitmap and Vector graphics for Multiplatform Kotlin
korio - Korio: Kotlin cORoutines I/O : Virtual File System + Async/Sync Streams + Async TCP Client/Server + WebSockets for Multiplatform Kotlin 1.3
spring-kotlin-coroutine - Kotlin coroutine support for Spring.
Hibernate - Hibernate's core Object/Relational Mapping functionality
kroto-plus - gRPC Kotlin Coroutines, Protobuf DSL, Scripting for Protoc