jessewilson
06/24/2026, 11:24 AMjessewilson
06/24/2026, 11:27 AMjessewilson
06/24/2026, 11:29 AMjessewilson
06/24/2026, 11:30 AMjessewilson
06/24/2026, 11:33 AMandroidNativeX64) that I never actually run locallyjessewilson
06/24/2026, 11:37 AMjessewilson
06/24/2026, 11:42 AMjessewilson
06/24/2026, 11:49 AMJavier
06/24/2026, 12:05 PMjessewilson
06/24/2026, 12:05 PMjessewilson
06/24/2026, 12:06 PMmbonnin
06/24/2026, 12:27 PMkotlinc to be able to produce and consume some kind of multiplatform IR.
No need for a static artifact for the public API, build tools should be able to transform the "full" artifact for compilation avoidance, like Gradle is doing. The reasonning is that in 90% of the cases, I will need the full artifact at the end to run my program so I'm ok to have only big one containing public API + implementation.
This is more or less similar what Java bytecode is doing actually. Except we need this for KMPCLOVIS
06/24/2026, 1:15 PMmbonnin
06/24/2026, 1:15 PMCLOVIS
06/24/2026, 1:16 PMmbonnin
06/24/2026, 1:16 PMmbonnin
06/24/2026, 1:16 PMCLOVIS
06/24/2026, 1:17 PMmadisp
06/24/2026, 1:38 PMCLOVIS
06/24/2026, 1:41 PMmadisp
06/24/2026, 1:41 PMCLOVIS
06/24/2026, 1:42 PMCLOVIS
06/24/2026, 1:43 PMmbonnin
06/24/2026, 1:44 PMmbonnin
06/24/2026, 1:45 PMmbonnin
06/24/2026, 1:46 PMmbonnin
06/24/2026, 1:47 PMVsevolod Tolstopyatov [JB]
06/24/2026, 1:48 PMjoseph_ivie
06/24/2026, 2:39 PMjoseph_ivie
06/24/2026, 2:42 PMjoseph_ivie
06/24/2026, 2:44 PMCLOVIS
06/24/2026, 2:46 PMapi() dependencies correctly and reliably, it's only really an option for implementation()joseph_ivie
06/24/2026, 2:48 PMjoseph_ivie
06/24/2026, 2:50 PMjoseph_ivie
06/24/2026, 2:50 PMCLOVIS
06/24/2026, 2:51 PMjoseph_ivie
06/24/2026, 2:52 PMCLOVIS
06/24/2026, 2:53 PMjoseph_ivie
06/24/2026, 2:54 PMCLOVIS
06/24/2026, 2:55 PMCLOVIS
06/24/2026, 2:55 PM:annotations module has not changed a single time since it was createdjoseph_ivie
06/24/2026, 2:58 PMCLOVIS
06/24/2026, 3:00 PMCLOVIS
06/24/2026, 3:00 PMjoseph_ivie
06/24/2026, 3:00 PMCLOVIS
06/24/2026, 3:01 PMjoseph_ivie
06/24/2026, 3:01 PMCLOVIS
06/24/2026, 3:02 PMCLOVIS
06/24/2026, 3:02 PMCLOVIS
06/24/2026, 3:03 PMCLOVIS
06/24/2026, 3:03 PMmbonnin
06/24/2026, 3:04 PMI wonder if NMCP could do that by editing the .module to point to the JARs from the previous version. But then you would still need empty JARs because they're mandatoryProbably could but I'm not sure the Kotlin world is ready for it π
CLOVIS
06/24/2026, 3:05 PMCLOVIS
06/24/2026, 3:05 PMCLOVIS
06/24/2026, 3:05 PMCLOVIS
06/24/2026, 3:19 PMmbonnin
06/24/2026, 3:21 PMCLOVIS
06/24/2026, 3:22 PMmbonnin
06/24/2026, 3:22 PMCLOVIS
06/24/2026, 3:22 PMmbonnin
06/24/2026, 3:23 PMmbonnin
06/24/2026, 3:23 PMmbonnin
06/24/2026, 3:24 PMCLOVIS
06/24/2026, 3:24 PMimplementation("dev.opensavvy.ktmongo:bson-multiplatform:0.31.0:67ba53109667af9dbbf1a9dd84f1eb316c558a0a415afc89a09a923852cb8dc6d6ecc2e704abeb4abcb21d737f7c6919b9695cd00f8940489223ac0398360db1")
where the hash is for the .module (since it already contains the hashes of individual files)mbonnin
06/24/2026, 3:24 PMCLOVIS
06/24/2026, 3:25 PMIf the artifact disappeared then you're out of luck πRight, but you can have a centralized MavenCentral-like backup repo. It only has to index the most popular libs, not everything
CLOVIS
06/24/2026, 3:25 PMmadisp
06/24/2026, 3:26 PMmadisp
06/24/2026, 3:26 PMCLOVIS
06/24/2026, 3:33 PMimplementation("dev.opensavvy.ktmongo:bson-multiplatform:0.31.0:67ba53109667af9dbbf1a9dd84f1eb316c558a0a415afc89a09a923852cb8dc6d6ecc2e704abeb4abcb21d737f7c6919b9695cd00f8940489223ac0398360db1")
then the resolution algo is:
1. GET <http://ktmongo.opensavvy.dev/.well-known/distributed-artifacts.json|ktmongo.opensavvy.dev/.well-known/distributed-artifacts.json> β get the URL of the primary artifact repository for this group (= client verification of authority via SSL). A library author can opt-in to use a shared repository like MavenCentral.
2. GET <http://ktmongo.opensavvy.dev/.well-known/distributed-artifacts.gpg|ktmongo.opensavvy.dev/.well-known/distributed-artifacts.gpg> β all artifacts must be signed by one of the keys in this file, otherwise they don't come from the library authors.
3. GET whatever-was-responded/dev.opensavvy.ktmongo/bson-multiplatform/0.31.0/artifacts.json β this file should match the hash & GPG signature, and contain the list of variants for that dependency, each with their own hash
4. GET whatever-was-responded/dev.opensavvy.ktmongo/bson-multiplatform/0.31.0/bson-multiplatform-0.31.0.jar β don't forget to check hashes & GPG signature
The steps 3 and 4 can be performed to a proxying/caching mirror if you have one for your org.CLOVIS
06/24/2026, 3:39 PMCLOVIS
06/24/2026, 3:41 PMCLOVIS
06/24/2026, 3:42 PMrusshwolf
06/24/2026, 11:15 PMmadisp
06/25/2026, 5:09 AMCLOVIS
06/25/2026, 7:34 AMWould the idea be that everyone sets up their own mirrors/caches to avoid this?Maybe not everyone, but hopefully enough people that it's reliable. MavenCentral won't disappear, it can serve as a fallback. It would only need to index very popular libraries (and not necessarily everything), and it would get much less traffic, which would make it less expensive to maintain. Hopefully JetBrains would provide one as well.
CLOVIS
06/25/2026, 7:35 AMpdvrieze
07/02/2026, 7:56 PM