Journey to the Centre of the JVM - Daniel Spiewak
Вставка
- Опубліковано 4 лип 2024
- What do you do when your quest for power leads you to implementations which are not just platform-but processor- and even architecture-version-specific in nature? How do you even start tracking down a bug in a Scala-based implementation which is not only nondeterministic, but only manifests on certain hardware?
In this talk, we will dive into the wild and ill-understood world of CPU architecture, memory models, and JVM intrinsics (all through the lens of very high-level purely functional abstractions!) as we examine the story of the most convoluted and mind-bending bug hunt of my entire career.
--------------------------------------------
Philly Emerging Technologies for the Enterprise (ETE) is hosted yearly by Chariot Solutions. You can visit our website at chariotsolutions.com/
We're hiring! Come work with our talented team of developers: visit our careers page for open positions, interview process, benefits, and more. chariotsolutions.com/careers/... - Наука та технологія
Awesome talk, I want to send it to my Architecture prof from school.
Amazing! Thank you for the talk!
Brilliant solution
Awesome talk, thank you¡
Freak'n awesome story... what an adventure...
Very interesting talk, and very non trivial issue.
Great talk
What... ?!? ... no thumbs down yet? ... let me help ya.... ;-) Nah - just kidding - this video deserves a fat thumbs UP ! :-D
BTW the language D is also a low level programming language and it's super-well designed too! Looking forward to compile D to LLVM and call it from Java in the GraalVM !
As soon as I see the code, I suspected not specifiying cancel volitile will be the issue, in JVM it is very risky to rely on side effects of other instructions.
Excellent talk. Really enjoyed it. Why do you say it improved performance though? GAS will always do an unconditional write so comparatively it should be a teeny tiny bit slower, no?
As long as you don't read it sooner the propagation of the write can happen while other instructions are processed.
at 17:45 I think thread 3 may also see a == 2.
I agree -- I think println(1), println(2), or no console output are all valid program outputs. println(0) is not valid
JVM the worst thing that could ever happen to humanity, right after C++