KEEP
koin
Our great sponsors
KEEP | koin | |
---|---|---|
41 | 9 | |
2,629 | 7,434 | |
3.2% | 1.3% | |
6.1 | 9.1 | |
about 1 month ago | 6 days ago | |
Kotlin | ||
- | GNU General Public License v3.0 or later |
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
-
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.
-
Toying with Kotlin's context receivers
KEEP: Context receivers
-
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
-
Combining scripts and DSLs is Kotlin’s most underrated feature
I’m realizing I forgot to mention the scripting proposal in the post, will add it soon.
-
Java 20 looks like it may be one of the biggest updates in years
Tfw no pattern matching. :(
- Encapsulate successful or failed function execution
-
Preview of Kotlin 1.6.20 With Prototype of Context Receivers, Parallel Compilation on JVM, Incremental Compilation in JS
I hadn't gone over the Context Receivers design proposal until now (and still doing so, so take this with a grain of salt), but the use of what is seemingly a function call(but not) to define them seems like a bad choice. I'm sure there are design constraints that pushed this option forward, but it just seems really odd and out of place in the current Kotlin language design.
-
JSpecify: Express specifications (initially, just nullness properties) in a machine-readable way
I'm aware that kotlin decided against this in kotlin itself, see https://github.com/Kotlin/KEEP/issues/82.
koin
-
Compose - NavHost recomposition multiple times
It's a Koin issue, not compose. Discussed here https://github.com/InsertKoinIO/koin/issues/1079
-
Do we really need to use Dependency Injection Framework?
Now I will finish up saying Hilt is just an opinionated way to dependency injection on Android, but there are simpler frameworks out there such as Koin or Kodein that can help take away a lot of the troubles that can come when you try to make your own framework. Just know that most other frameworks tend to be runtime injection instead of compile time injection like Hilt, which can be helpful to know at compile time if you are missing a dependency in your graph as opposed to runtime when its out in the wild.
-
Can someone suggest a simple dependency injection library for TypeScript/JavaScript?
I've been using Angular a lot and I like how it works. I'm also a huge fan of koin for kotlin.
-
A Kotlin programmer's approach to microservices?
for injection, I suggest Koin (https://insert-koin.io/)
-
View Model Doesn’t Have To Depend on ViewModel
It'd be great if it worked
-
Kotlin Team AMA #3: Ask Us Anything
For DI take a look at Koin. It's a pragmatic lightweight dependency injection framework for Kotlin developers with multiplatform support. PeopleInSpace sample project uses it.
-
Hilt is stable! Easier dependency injection on Android
Because of unresolved issues like https://github.com/InsertKoinIO/koin/issues/996
-
I'm a lost newbie : how to dev state-of-the-art Android apps?
ah, yes
-
WooCommerce Client - Kotlin Multiplatform mobile - Discussion for Library
We are using the following libs in a production project (ios/android): Jodatime --> started with Klock but recently ported to kotlinx-datetime Dagger(2) --> koin Gson --> kotlinx.serialization Socket.IO --> Ktor
What are some alternatives?
Kodein - Painless Kotlin Dependency Injection
kotlin-guice - Guice DSL extensions for Kotlin
injekt
spring-fu - Configuration DSLs for Spring Boot
Katana - Lightweight, minimalistic dependency injection library for Kotlin & Android
kapsule - Minimalist dependency injection library for Kotlin.
kotlin-guiced - Convenience Kotlin API over the Google Guice DI Library
kotlinx.serialization - Kotlin multiplatform / multi-format serialization
KODI - light-weight KOtlin Dependency Injection (KODI)
KorGE - KorGE Game Engine. Multiplatform Kotlin Game Engine
realm-kotlin - Kotlin Multiplatform and Android SDK for the Realm Mobile Database: Build Better Apps Faster.
PopKorn - DI can be simple. Forget about modules and components. Just use it!