SerenityOS is a new operating system that we're building from scratch. serenityos.org Ladybird is a cross-platform web browser, also part of the SerenityOS project. :^)
00:00 Intro / Task of the day 02:25 Standalone bytecode VM 23:27 A simple interpreter 28:25 A simple JIT compiler 1:15:02 Performance comparison 1:18:40 Reflections / Outro
SerenityOS is a new operating system that we're building from scratch. serenityos.org Ladybird is a cross-platform web browser, also part of the SerenityOS project. :^)
I'm using the CLion IDE from JetBrains: jb.gg/clion_ak My coding font is Berkeley Mono: berkeleygraphics.com/typefaces/berkeley-monoWrong document URL after parsing some HTML dynamicallyAndreas Kling2024-10-17 | Continuing the climb up mount WPT... Today we look at some failures under /domparsing where Flow is doing better than we are!
Timestamps: ========================================================= 00:00 Intro 00:17 Performance 00:44 JavaScript performance 02:15 Cookie performance 03:16 Network request performance 04:18 Find in Page 05:11 Hamburger menu 05:55 clip-path: polygon 06:45 window.open() for real 07:29 Many new web APIs 08:29 Demo: Hamburger menu 08:45 Demo: X.com performance 09:46 Demo: Twinings performance 10:24 Demo: Another World JS performance 11:23 Demo: "Clusters" life-like particle system 11:58 Demo: More CSS transforms support with CPU rasterizer 13:15 OutroSerenityOS update (April 2024)Andreas Kling2024-05-01 | Thank you Andrew for hosting!!
Timestamps: ========================================================= 00:00 Intro 00:14 University of Utah guest lecture 01:00 Living on Ladybird 01:13 Living on: GitHub 03:39 Living on: X 09:10 Single instance UI process 10:29 Asynchronous image decoding 11:50 Task manager 13:13 SVG improvements 13:52 Many new web APIs 14:48 C++ static analysis with libclang 17:45 Some new debugging aides 20:41 Demo: faces.js 22:20 Demo: svgviewer.dev 23:27 Demo: everytimezone.com 23:45 Demo: microsoft.com 26:40 Outro2000 days of SerenityOS (Git history visualized)Andreas Kling2024-04-10 | We just passed 2000 days since the start of the SerenityOS project, and I just love looking at these gource visualizations!
Generated with Gource: gource -2560x1440 --title "SerenityOS" --hide progress --max-user-speed 500 --seconds-per-day 0.11 -e 0.01 --bloom-intensity 0.04 --multi-sampling --hide filenames -o - | ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i - -vcodec libx264 -crf 19 -threads 0 -bf 0 output.mp4CS 4560 guest lecture: Ladybird browser developmentAndreas Kling2024-04-10 | I was invited by professor Pavel Panchekha at the University of Utah to speak to his CS 4560 (Web Browser Internals) students about Ladybird, and give a demonstration of real-life browser development. We finished up with a Q&A.
Follow Pavel on X: twitter.com/pavpanchekha Check out the Browser Engineering textbook used by the class: https://browser.engineering/SerenityOS update (March 2024)Andreas Kling2024-04-01 | Thank you Nico for guesting today!
SerenityOS is a new operating system that we're building from scratch. serenityos.org Ladybird is a cross-platform web browser, also part of the SerenityOS project. :^)Browser hacking: Lets hack on the JIT until ai-astar.js SINGSAndreas Kling2023-11-12 | Kraken/ai-astar.js go brr PR: github.com/SerenityOS/serenity/pull/21910
SerenityOS is a new operating system that we're building from scratch. serenityos.org Ladybird is a cross-platform web browser, also part of the SerenityOS project. :^)
00:00 Intro / Task of the day 02:14 Fast path for loose equality checks 14:40 Fast path for Array.length 35:55 What next? Profile & analysis 46:55 OutroBrowser hacking: JIT fast path for variable accessAndreas Kling2023-11-06 | PR: github.com/SerenityOS/serenity/pull/21822
SerenityOS is a new operating system that we're building from scratch. serenityos.org Ladybird is a cross-platform web browser, also part of the SerenityOS project. :^)SerenityOS update (October 2023)Andreas Kling2023-10-31 | Martin's video about property-based testing: youtube.com/watch?v=WD1a-HVFRn0
SerenityOS is a new operating system that we're building from scratch. serenityos.org Ladybird is a cross-platform web browser, also part of the SerenityOS project. :^)
00:00 Intro / Task of the day 03:25 Consolidating JIT exits 12:30 Preserving fewer registers across native calls 24:25 Investigating a test-js crash 26:23 Smaller native calls, continued 45:44 Tighter setup of exception unwind contexts 53:25 Reflections / OutroBrowser hacking: JIT chores, refactoring, and some code size optimizationAndreas Kling2023-10-26 | Follow me on X: https://x.com/awesomekling Sponsor me on GitHub: github.com/sponsors/awesomekling Support me on Patreon: patreon.com/awesomekling Donate via PayPal: paypal.me/awesomekling
SerenityOS is a new operating system that we're building from scratch. serenityos.org Ladybird is a cross-platform web browser, also part of the SerenityOS project. :^)Browser hacking: Making a dumb loop go fast in the JIT!Andreas Kling2023-10-23 | MAKE DUMB LOOP GO FAST
SerenityOS is a new operating system that we're building from scratch. serenityos.org Ladybird is a cross-platform web browser, also part of the SerenityOS project. :^)
00:00 Intro / Task of the day 02:50 Increment fast path 29:05 LessThan fast path 1:01:04 Multi-jump assembler labels 1:08:29 Reflections / OutroBrowser hacking: More JIT coverage on Kraken + Optimizing thisAndreas Kling2023-10-21 | Follow me on X: https://x.com/awesomekling Sponsor me on GitHub: github.com/sponsors/awesomekling Support me on Patreon: patreon.com/awesomekling Donate via PayPal: paypal.me/awesomekling
SerenityOS is a new operating system that we're building from scratch. serenityos.org Ladybird is a cross-platform web browser, also part of the SerenityOS project. :^)
00:00 Intro / Task of the day 00:58 TypeofVariable 08:27 SetVariable 17:10 NewArray 22:49 NewFunction 30:42 PutByValue 37:36 JIT vs interpreter performance so far 39:50 Profiling ai-astar.js 41:45 Optimizing ResolveThisBinding 52:35 Thoughts on near-future optimization 54:40 Trying other Kraken tests 56:40 GetVariable? 57:16 Ehhhh not today 57:28 Reflections / OutroBrowser hacking: Lets JIT the Kraken JS benchmark! (partially)Andreas Kling2023-10-20 | Let's churn out JIT code until something runs! :^)
SerenityOS is a new operating system that we're building from scratch. serenityos.org Ladybird is a cross-platform web browser, also part of the SerenityOS project. :^)
00:00 Intro / Task of the day 02:05 Compiling each function only once 08:05 Printing JIT success 10:00 Looking at what instructions to implement 10:35 ToNumeric 14:05 ResolveThisBinding 19:08 GetByValue 27:08 Decrement 29:16 GetGlobal 35:59 PutById 47:14 Discovering a register collision 48:20 Preserving callee-saved registers 50:57 Back to the register collision 53:03 PutById, continued 55:37 NewObject 58:30 Did we improve performance? 1:01:45 Call 1:19:09 Not (and other unary instructions) 1:23:45 Checking coverage on other tests so far 1:25:41 Reflections / OutroBrowser hacking: Jitting return statements, arithmetic, etcAndreas Kling2023-10-18 | Follow me on X: https://x.com/awesomekling Sponsor me on GitHub: github.com/sponsors/awesomekling Support me on Patreon: patreon.com/awesomekling Donate via PayPal: paypal.me/awesomekling
SerenityOS is a new operating system that we're building from scratch. serenityos.org Ladybird is a cross-platform web browser, also part of the SerenityOS project. :^)
00:00 WHF 00:08 Pull request adding "throw" keyword 02:25 Task of the day 03:55 Add, Sub, Mul, Div 09:57 Return statements 19:00 String literals 27:55 Let's do all the binary ops 36:45 Looking for inspiration in SunSpider 38:50 Simple object property access (Get) 1:00:43 Reflections / OutroBrowser hacking: Basic try...catch in the JavaScript JITAndreas Kling2023-10-17 | Let's start dealing with exceptions right away instead of accumulating more FIXMEs about them :^)
SerenityOS is a new operating system that we're building from scratch. serenityos.org Ladybird is a cross-platform web browser, also part of the SerenityOS project. :^)Browser hacking: Some quick JIT assembler cleanupsAndreas Kling2023-10-16 | Sometimes we have to do a little cleanup before continuing with the main work :^)
SerenityOS is a new operating system that we're building from scratch. serenityos.org Ladybird is a cross-platform web browser, also part of the SerenityOS project. :^)Browser hacking: JIT fast path for JavaScript ToBoolean()Andreas Kling2023-10-15 | Follow me on X: https://x.com/awesomekling Sponsor me on GitHub: github.com/sponsors/awesomekling Support me on Patreon: patreon.com/awesomekling Donate via PayPal: paypal.me/awesomekling
SerenityOS is a new operating system that we're building from scratch. serenityos.org Ladybird is a cross-platform web browser, also part of the SerenityOS project. :^)
00:00 Intro / Recap 02:28 Task of the day 04:50 Sketching out the code 13:28 Adding Assembler API 24:04 Debugging 41:04 It works! Performance testing 41:45 Reflections / OutroBrowser hacking: Lets add a JIT compiler to LibJSAndreas Kling2023-10-14 | Follow me on X: https://x.com/awesomekling Sponsor me on GitHub: github.com/sponsors/awesomekling Support me on Patreon: patreon.com/awesomekling Donate via PayPal: paypal.me/awesomekling
Andreas Kling: https://x.com/awesomekling Alexander Kalenik: https://x.com/KalenikW Andrew Kaster: https://x.com/RamborambowskiCar talk: Ladybird funding/hiring/goals updateAndreas Kling2023-08-21 | Follow me on X for more regular updates: https://x.com/awesomeklingSerenityOS update (July 2023)Andreas Kling2023-08-01 | Come chat with us on Discord: discord.gg/serenityos