Artem Kobzar

@jsmonk.bsky.social

Leading Kotlin/JS at @jetbrains.com, @tc39.es Delegate Personal blog: https://jsmonk.github.io/

Big Kotlin/JS testing milestone in 2.4.20: We’re starting the migration away from Karma (deprecated ~3 years ago) with a new browser-test DSL + Playwright-based implementation. Huge respect to Karma for serving the ecosystem for so long. kotlinlang.org/docs/whatsne...

What's new in Kotlin 2.4.20-Beta2 | Kotlin

Read the Kotlin Early Access Preview release notes and try the latest experimental Kotlin features before they are officially released.

kotlinlang.org

Servo now passes 100% of WPT tests for the WebCrypto API, all 73,292 subtests, covering 25 cryptographic algorithms 🎉 A complete, spec-correct cryptography implementation in an independent Rust-powered browser engine is a big milestone!

Screenshot of the Web Crypto API WPT tests chart showing 100%

👀 JS Composites proposal update "After benchmarking and general reflection, the proposal is now pursuing an interning based approach." - @acutmore We didn't get Records & Tuples but we may still get interned data structures in JS! Really exciting update if this lands in JS

Bild
Rob Palmer@robpalmer.bsky.social · last yr.

ECMAScript excitement 😉 Congrats to @ashley-c.bsky.social on advancing the Composites proposal to Stage 1 at TC39 today 🎉 This is the evolution of Stage 2 Record & Tuple which has now been withdrawn. A key difference is that Composites are objects, not primitives. github.com/tc39/proposa...

A fantastical contribution from Sébastien Doeraene (Scala.js creator) just gave a very real speedup to 64-bit number arithmetic (non-BigInt path). github.com/JetBrains/ko... I’m seeing ~2–3x per-op improvements on average, with peaks around 5x+ (and even 7.3x in more complex benchmarks). Thread 👇

[K/JS] Improve performance of boxed Longs (signed and unsigned). by sjrd · Pull Request #6450 · JetBrains/kotlin

We take all the algorithms from Scala.js. Most of them were published in the following paper: S. Doeraene and T. Schlatter, "64-bit Integer Division for the JavaScript Platform," 33rd IE...

github.com

Kotlin folks, I need your gut feeling on this one. If `when` guards were allowed with comma-separated branches, what should this mean? A) guard applies only to Success B) guard applies to both Failed and Success This can actually impact the language design.

Bild

Continuing yesterday's topic on `copy()` visibility: In multiplatform, `public` isn't always public. To make Kotlin code visible to TypeScript/Swift, you need additional setup. And that distinction just collided with data classes. 👇 Docs: kotlinlang.org/docs/native-...

Interoperability with Swift using Swift export | Kotlin

Kotlin's interoperability with Swift through Swift export is currently in Alpha. Swift export allows you to export Kotlin sources directly and call Kotlin code from Swift idiomatically, eliminating…

kotlinlang.org

A "tiny" Kotlin design question that turned into an 8-year discussion, new default + a multi-release deprecation plan: If a data class constructor is private, should its generated `copy()` still be public?

Bild

This is legal TypeScript: function Foo {} namespace Foo {} interface Foo {} // or type Foo = … // All in one file. Thread on how it solved a Kotlin ↔ TypeScript interop problem 👇


TIL a tiny Kotlin/JVM thing while aligning behavior between JS and JVM compilers: ::topLevelFun is Function1, as expected. But it’s also KFunction0, KFunction1, and KFunction2 according to is. FunctionN knows arity, KFunctionN just vibes 🙂 pl.kotl.in/nF4b2Je2w

Bild

A friend today basically told me: “You’re doing interesting stuff around Kotlin, TypeScript, compilers, Wasm… and somehow sharing none of it.” Fair. Expect more about: - Kotlin lang/compiler - TypeScript interop - JS & Wasm targets - compiler/engineering rabbit holes

Note-takers are the unsung heroes of TC39. Without them, no progress could be made. It is right to give them thanks and praise. Here's to those who helped at this week's meeting! 🥳👏🙌 👇