Vsevolod Tolstopyatov's Avatar

Vsevolod Tolstopyatov

@qwwdfsad.bsky.social

Doing stuff in Kotlin @ JetBrains. API design, concurrency, performance,

161 Followers  |  77 Following  |  41 Posts  |  Joined: 24.12.2023  |  2.0773

Latest posts by qwwdfsad.bsky.social on Bluesky

Random quote of the day: income taxes 'required an element of understanding as to why they were needed on the part of the individuals subject to said taxes and this understanding was usually widely lacking'

01.07.2025 20:24 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

My *by far* the most favourite talk this year.

@Sellmair did an amazing job -- explaining dynamic classloading, DCEVM, continuous builds, Compose internals, anonymous classes naming policy, and more in a deeply technical yet engaging manner

20.06.2025 14:34 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Such things rarely can happen individually, often they cannot even happen within a single team or a product.

I am eternally grateful to have @stukalov.bsky.social
on my side. Congrats! That's your achievement as much as it's Kotlin's πŸ’œ

23.05.2025 07:36 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

We poured the real effort, broke really thick walls, had heated debates and pitches, stretched IntelliJ limits (sometimes as far as using test infra to make it work in the LSP), and damn we did it! And there is still more to come :)

23.05.2025 07:35 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Not only was that a hell of a team effort, pushing the IJ codebase to its limits, but it is also a great step forward for Kotlin and a huge shift within JetBrains that we made happen.

23.05.2025 07:35 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
GitHub - Kotlin/kotlin-lsp: Kotlin Language Server and plugin for Visual Studio Code Kotlin Language Server and plugin for Visual Studio Code - Kotlin/kotlin-lsp

There is plenty of amazing stuff announced at KotlinConf.

But the thing I am most proud of is our release of Kotlin LSP along with VSC support: github.com/Kotlin/kotli...
Damn that was some action!

23.05.2025 07:34 β€” πŸ‘ 9    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

Futurama was definitely released ahead of its time

20.02.2025 18:03 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

If you want to participate in a naming battle, here's your chance!

I'd even say it might have an effect similar to deprecating String.capitalize(), but this time with a (hopefully) properly-named replacement

20.02.2025 17:43 β€” πŸ‘ 9    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Preview
Sequences.kt GitHub Gist: instantly share code, notes, and snippets.

gist.github.com/qwwdfsad/eb3...

Something like that can do the trick (for less trivial chains still, similar to streams).

By the way, beware of benchmarks not consuming (returning) the result from the @Benchmark function, maybe it's worth remeasuring the original bench (especially the small one)

14.02.2025 10:57 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Thinking about it more, we can potentially provide a push-based sequence almost seamlessly, but it will require quite some tweaks.
And for trivial use cases (small collections, trivial transformations) unlikely to be *much* faster

13.02.2025 19:10 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Iterator-based protocol (which sequence is) is really unfortunate, the constant field-spilling and hasNext-next pair (which is strict with its contract) absorbs all the CPU :(

Also, a nice showcase of why we picked the push-based Flow model!

13.02.2025 19:02 β€” πŸ‘ 4    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0

totally deserved!

07.02.2025 13:02 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Is it going to deadlock because of the clinit "deadlock" where lambda body (private static fun) cannot be invoked from another thread ("parallel") unless clinit is completed which in turn awaits parallel operator to complete?

05.02.2025 17:59 β€” πŸ‘ 6    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

Not all notes are that useful though

19.12.2024 10:52 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

...and today is one of these days. Thank you, Seva from the past, I guess

18.12.2024 19:04 β€” πŸ‘ 7    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

When dealing with concurrency problems, I leave comments with my findings even if they aren't really that meaningful (e.g. "don't do X, X leads to logical races" What races? Why?). I used to feel uneasy about that, but damn, every now and then, they save me hours of debugging

18.12.2024 19:04 β€” πŸ‘ 11    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

By the way, @volebamor.bsky.social suggested a really beautiful solution -- count all the junctions (i.e. β–’β–’ has two junctions: βŠ₯ and ⊀) and subtract the number from the perimeter. I am still mad that it actually works!

12.12.2024 23:07 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Damn these modern business practices! Who on earth counts discounts LIKE THAT?!

12.12.2024 19:18 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

you can probably guess what the section is about :)

12.12.2024 17:21 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

Came up with this one when writing an internal blogpost about performance work

12.12.2024 17:20 β€” πŸ‘ 4    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Sorry for that, I promise I'll switch back to technical content

12.12.2024 14:08 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

An update to the posting: www.jetbrains.com/careers/jobs...

Now with Germany and Netherlands on the table!

12.12.2024 14:07 β€” πŸ‘ 10    πŸ” 3    πŸ’¬ 1    πŸ“Œ 0

Also, the job description is supposed to be that :) There is, of course, regular maintenance, OSS, and compatibility work, things like that one cannot escape %)

09.12.2024 18:01 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

That's up to you for sure. Usually, what we care about (apart from the usual stuff) is the broad understanding of the JVM ecosystem and the taste for DX/ergonomics. Quite a few Kotlin developers (me included :)) were not really savvy with Kotlin beforehand

09.12.2024 17:59 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

(I assumed you are in the UK, for some reason I remember it. Sorry if that's incorrect)

09.12.2024 12:14 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

I think we can hire in the UK (under the umbrella company) in some specific circumstances (i.e. it's obligatory to already have a residence there), and _maybe_ we are in the process of opening a legal entity there.

So it is up to you, you might as well consider applying without moving anywhere πŸ™‚

09.12.2024 12:13 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Bimorphic inlining not applied at a call site that was initially monomorphic

And we are also trying to fix or report things when it is possible mail.openjdk.org/pipermail/ho...

09.12.2024 09:40 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

...updates to UUID RFC after 19 goddamn years of radiosilience but right after we finished our design work on it, the word 'digit' in 'isDigit' including 'Ω©' and JIT not able to inline the trivial thing that makes our parser 20% slower

09.12.2024 09:38 β€” πŸ‘ 4    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Examples of dragons include but are not limited to such wonderful things as lost days in the calendar, official Windows file paths that even Internet Explorer does not support, a JSON spec (jokes on you, there is no spec)...

09.12.2024 09:38 β€” πŸ‘ 6    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Kotlin Libraries Senior Software Developer (Kotlin) - Kotlin Libraries - Careers

Kotlin libraries team is hiring: www.jetbrains.com/careers/jobs...

If you are eager to write something you are going to regret (if you are lucky, also be proud of) in 10 years, want to tinker with Kotlin and not afraid of dragons (also: performance, concurrency), drop me a line!

09.12.2024 09:32 β€” πŸ‘ 43    πŸ” 18    πŸ’¬ 2    πŸ“Œ 1

@qwwdfsad is following 20 prominent accounts