github.com/netty/netty/...
This is only needed for 4.1.x, in 4.2.x we are able to fix this in another way that does not require the usage of sun.misc.Unsafe
@forked-franz.bsky.social
github.com/netty/netty/...
This is only needed for 4.1.x, in 4.2.x we are able to fix this in another way that does not require the usage of sun.misc.Unsafe
The Devoxx Belgium 2025 CFP is now OPEN!
โก๏ธhttps://dvbe25.cfp.dev
This year weโre zooming in on Java 25 & AI Agents๐ค
Got insights, hacks, or bold ideas? Share them with the dev community at #Devoxx ๐ฅ
From @forked-franz.bsky.social : These days, lot of @openjdk.org loom fun:
github.com/franz1981/Ne...
Do you know that VT schedulers are inherited?
Which means that if you have your own and clinit some Key OpenJDK class, u risk to make your scheduler to leak into some JDK class (!)
Today I learned that in IBM J9 not all classes are the same:
> "A ROM Class roughly corresponds to the contents of a .class file; it is not a complete class because it only references its superclass and implemented interfaces by name."
blog.openj9.org/2018/11/08/a...
github.com/eclipse-open...
โ printf debugging
โ
segfault debugging
โฐ Starting soon! Join us for Quarkus Insights Ep. #206 as Andrea Peruffo & Hiram Chirino join us to talk about WebAssembly (WASM) & how it powers a wide range of apps & reveals potential for unique integrations & performance gains, in Java & Quarkus.
bit.ly/quarkusinsig...
It is likely a way to observe the dynamic of the system.
Probably it is more actionable to have predicates applied to an analysis of the same events
It looks cdn.jsdelivr.net/npm/timeline... but I could be wrong
14.05.2025 10:08 โ ๐ 0 ๐ 0 ๐ฌ 1 ๐ 0TIL: since jdk22 you can use the JVM option -XX:LogClassLoadingCauseFor=com.mycompany.MyClass in conjunction with -Xlog:class+load+cause* to find out the stacktrace that triggers the load of the specify class.
see github.com/openjdk/jdk/...
Was fighting a "LinkageError: attempted duplicate class definition" for 3 days... took me 2 seconds with that option!
13.05.2025 15:09 โ ๐ 1 ๐ 1 ๐ฌ 1 ๐ 0Many thanks ๐
11.05.2025 15:09 โ ๐ 1 ๐ 0 ๐ฌ 0 ๐ 0The podcast episodes by @adambien.blog and @forked-franz.bsky.social talking low level Java performance stuff are ๐๐ป๐๐ป
I hope they do more
airhacks.fm#episode_343
airhacks.fm#episode_340
This is the JMC timeline or something different? ๐
08.05.2025 14:47 โ ๐ 0 ๐ 0 ๐ฌ 2 ๐ 0An anthropomorphic pig in a trench coat telling a man in military garb "I'd rather be a pig than a fascist"
Showing kiddo Porco Rosso
04.05.2025 18:06 โ ๐ 50 ๐ 1 ๐ฌ 3 ๐ 0A modified version of this: github.com/rigtorp/MPMC...
03.05.2025 19:41 โ ๐ 1 ๐ 2 ๐ฌ 1 ๐ 0Thanks for sharing! Yep, it is a refined version of www.1024cores.net/home/lock-fr...
I have designed an unbounded version of it which is more producer centric - and leverage x86 lock xadd - but very similar, in the core concept i.e. per-slot headers to independently track changes
(We need the queue to be lock-free even though the kernel is single-threaded because we may want to schedule a task from an interrupt handler, and if the interrupt fires during a task schedule that held a lock on the queue, the kernel would deadlock)
03.05.2025 09:08 โ ๐ 6 ๐ 1 ๐ฌ 1 ๐ 0// memcpy that yields intermittently to avoid blocking the kernel thread task<std::size_t> async_memcpy(void* destination, const void* source, std::size_t size) { constexpr std::size_t chunk_size = 4096; for (std::size_t offset = 0; offset < size; offset += chunk_size) { //copy a chunk of data, then... co_await reschedule; //reschedule the coroutine } co_return size; } task<unique_ptr<fat32>> fat32::mount( driver::block_device& device, std::string_view mount_point) { auto fs = unique_ptr<fat32>(new fat32()); // this should suspend fat32::mount until the read is complete auto boot_sector = co_await device.read(0, 1); //this eventually calls async_memcpy // etc. } task<> mount_initramfs() { // find initramfs memory, then... // this should suspend mount_initramfs until the mount is complete auto initramfs = co_await fat32::mount(initramfs_mem, "/"); if (!initramfs) { com1.write("Failed to mount initramfs\n"); co_return; } com1.write("Initramfs mounted at /\n"); }
The idea is that I have a cooperatively-scheduled single-threaded OS kernel that uses C++20 coroutines as its means of expressing tasks.
I want to be able to await on asynchronous tasks, and also manually yield back to the scheduler in the case of long-running computations.
Some examples:
CRT support
The performance is great and this is very easy to use for younger kids.
If anyone knows of resources for this, I am very much interested, as I am more or less fumbling around.
Getting a simple scheduler based on a lock free MPMC queue that works for basic coroutines was pretty straightforward, but as soon as those coroutines nest it becomes very headache-inducing.
Which mpmc one you used? Vjukov?
03.05.2025 19:05 โ ๐ 1 ๐ 0 ๐ฌ 1 ๐ 0Trying to implement an OS-level scheduler for C++20 coroutines that supports symmetric transfer and my brain is melting
02.05.2025 20:51 โ ๐ 36 ๐ 3 ๐ฌ 4 ๐ 1Hello you fine Internet folks,
Today's article we are deep-diving into the architecture of Zhaoxin's latest CPU series, the KX-7000. We compare the KX-7000 to the KX-6000 along with some older x86 CPUs.
Hope y'all enjoy!
open.substack.com/pub/chipsand...
old.chipsandcheese.com/2025/04/30/z...
I finally got my hard copy of @tartanllama.xyz's Building a Debugger and boy is it a treat! Not only is it a missing guide to DWARF for dummies like me, but it is also a gentle introduction to x64 ASM. Highly recommended! Kudos to @nostarchpress.bsky.social really my fav tech publisher :chefkiss:
30.04.2025 19:06 โ ๐ 10 ๐ 2 ๐ฌ 1 ๐ 0github.com/JCTools/JCTo...
by @forked-franz.bsky.social need to spend some time at this work ๐คฏ
#jdk24 #jctools
We just integrated a performance improvement to Java String that will provide a ~10x performance boost in some applications where Strings are used as keys and where the associated values are constant foldable. This will make JDK 25 faster.
github.com/openjdk/jdk/...
I admit I'm a bit confused by the benchmark - especially why using MethodHandle. I would have VarHandle::loadFence + calling BlackHole::consume(string.hashcode)in a loop, since JMM should force to keep on loading the hash field, if not constant foldable
22.04.2025 17:30 โ ๐ 1 ๐ 0 ๐ฌ 0 ๐ 0๐งฉ Are We Enterprise-Ready Yet? By @evacchi.dev & @andreatp.bsky.social @ Wasm I/O 2025
โถ๏ธ Video: youtu.be/UyyVL-dDbCw
๐ Slides: docs.google.com/presentation... #wasmio25
Hello you fine Internet folks,
Today we have an interview with @oxidecomputer.bsky.social's @bcantrill.bsky.social about Oxide and what hardware they are building and the reasons why.
Hope y'all enjoy!
open.substack.com/pub/chipsand...
old.chipsandcheese.com/2025/03/27/a...
youtu.be/5-nOIlrUqMM
Rare chance to see me in person in Singapore!
March 27 I'll present on an extremely interesting JVM performance topic:
www.meetup.com/singadev/eve...
Also looking forwards to network and discuss anything related to @quarkus.io , @hibernate.org , @commonhaus.org
๐