mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 23:50:19 +00:00
d6a5b11f04
This implements the BrotliDecompressionStream, which is a Core::Stream that can decompress another Core::Stream.
628 lines
32 KiB
HTML
628 lines
32 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>SerenityOS: Year 3 in review</title>
|
|
<style>
|
|
body {
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
width: 600px;
|
|
font-size: 12pt;
|
|
font-family: sans-serif;
|
|
}
|
|
@media screen and (max-width: 610px) {
|
|
header h1 {
|
|
margin: 0;
|
|
}
|
|
body {
|
|
margin-top: none;
|
|
width: 100%;
|
|
}
|
|
#intro, footer {
|
|
margin-left: 1em;
|
|
margin-right: 1em;
|
|
}
|
|
}
|
|
@media screen and (min-width: 610px) {
|
|
article, h1, h2 {
|
|
border-radius: 10px;
|
|
}
|
|
}
|
|
|
|
@media only screen and (min-device-width: 375px) and (max-device-width: 667px) and (-webkit-min-device-pixel-ratio: 2) {
|
|
body {
|
|
width: 90%;
|
|
font-size: 1.4em;
|
|
}
|
|
|
|
}
|
|
|
|
h1, h2 {
|
|
padding: 12px;
|
|
background: #000;
|
|
color: white;
|
|
}
|
|
article h1 {
|
|
font-size: 1.1em;
|
|
vertical-align: middle;
|
|
margin: 0;
|
|
}
|
|
article h1 :link,
|
|
article h1 :visited {
|
|
color: white;
|
|
}
|
|
article img,
|
|
article iframe {
|
|
max-width: 100%;
|
|
border: 1px solid black;
|
|
}
|
|
article img.avatar {
|
|
width: 64px;
|
|
float: right;
|
|
border: none;
|
|
margin-bottom: 8px;
|
|
}
|
|
article {
|
|
padding: 20px;
|
|
margin-bottom: 20px;
|
|
background: #ddd;
|
|
}
|
|
article.developer {
|
|
background: #ddf;
|
|
font-style: italic;
|
|
}
|
|
article iframe {
|
|
border: 1px solid black;
|
|
}
|
|
article.hax0r {
|
|
background: black;
|
|
font-family: monaco;
|
|
}
|
|
article.hax0r,
|
|
article.hax0r h1,
|
|
article.hax0r :link,
|
|
article.hax0r :visited {
|
|
color: lime;
|
|
}
|
|
article.hax0r h1 {
|
|
background: #040;
|
|
}
|
|
.yakstack {
|
|
height: 96px;
|
|
margin-left: 32px;
|
|
float: right;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<header>
|
|
<h1>SerenityOS: Year 3 in review</h1>
|
|
</header>
|
|
<main>
|
|
<div id="intro">
|
|
<img class="yakstack" src="yakstack.png">
|
|
|
|
<p><b>Hello friends! :^)</b>
|
|
|
|
<p>Today we celebrate the third birthday of SerenityOS, counting from the first commit in the
|
|
<a href="https://github.com/SerenityOS/serenity/">git repository</a>, on October 10, 2018.
|
|
|
|
<p>Previous birthdays: <a href="https://serenityos.org/happy/1st">1st</a>, <a href="https://serenityos.org/happy/2nd">2nd</a>.
|
|
|
|
<p>What follows is a list of interesting events from the past year, mixed with random development
|
|
screenshots and also reflections from other developers in the SerenityOS community.
|
|
</div>
|
|
|
|
<article>
|
|
<h1>Introduction to SerenityOS</h1>
|
|
|
|
<p>SerenityOS is a from-scratch desktop operating system that combines a Unix-like core
|
|
with the look&feel of 1990s productivity software. It's written in modern C++ and
|
|
goes all the way from kernel to web browser. The project aims to build everything in-house
|
|
instead of relying on third-party libraries.
|
|
|
|
<p>I started building this system after
|
|
<a href="https://www.youtube.com/watch?v=j3JkNGKZtqM">finishing a 3-month rehabilitation program for drug addiction</a>
|
|
in 2018. I found myself with a lot of time and nothing to spend it on. So I began
|
|
building something I'd always wanted to build: my very own dream OS.
|
|
|
|
<p>Parts of my development work is presented in screencast format on
|
|
<a href="https://youtube.com/andreaskling">my YouTube channel</a>.
|
|
I also post monthly update videos showcasing new features there.
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2020-12-06: Working on Reddit support in LibWeb</h1>
|
|
|
|
<p>Building a browser takes time, and there's a lot of unglamorous
|
|
work like figuring out why things don't align right. Fortunately it's
|
|
also really fun!
|
|
|
|
<p><img src="2020-12-06.png">
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2020-12-20: Interview on CppCast</h1>
|
|
|
|
<p>I went on the <a href="https://cppcast.com">CppCast</a> podcast with <a href="https://twitter.com/lefticus">Jason Turner</a>
|
|
and <a href="https://twitter.com/robwirving">Rob Irving</a> to talk about SerenityOS.
|
|
|
|
<p>It was my first time doing an interview and I was really nervous about it,
|
|
but it turned out very okay!
|
|
|
|
<center><iframe width="560" height="315" data-src="https://www.youtube.com/embed/SRq9HSGn2qE" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center>
|
|
</article>
|
|
|
|
<article class="hax0r">
|
|
<h1>2020-12-20: The 2020 HXP CTF</h1>
|
|
<p>
|
|
SerenityOS was once again featured in the <a href="https://ctf.link/">HXP CTF</a>.
|
|
After being in their 2019 CTF, we spent a whole bunch of time beefing up system security,
|
|
and it definitely helped: This time, only 1 team was able to find an exploit,
|
|
compared to 6 teams in the previous CTF!
|
|
<p>
|
|
Write-ups & exploits from the event:
|
|
<ul>
|
|
<li><a href="https://hxp.io/blog/79/hxp-CTF-2020-wisdom2/"><b>yyyyyyy</b> found a kernel LPE due to a race condition between execve() and ptrace()</a></li>
|
|
<li><a href="https://github.com/allesctf/writeups/blob/master/2020/hxpctf/wisdom2/writeup.md"><b>ALLES! CTF</b> found a kernel LPE due to missing EFLAGS validation in ptrace().</a></li>
|
|
</ul>
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-01-06: Reading "Hackles" on SerenityOS</h1>
|
|
|
|
<p>I was very happy to get the classic Unix geek webcomic
|
|
<a href="http://hackles.org">Hackles</a> working in Browser.
|
|
|
|
<p><img src="2021-01-06.png">
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-01-10: LiveOverflow videos about SerenityOS</h1>
|
|
<p>At the start of 2021, hacking YouTuber LiveOverflow published
|
|
a series of videos about SerenityOS, looking into exploits against
|
|
the system.
|
|
|
|
<center><iframe width="560" height="315" data-src="https://www.youtube.com/embed/qUh507Na9nk" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center>
|
|
<p>All SerenityOS related videos from LiveOverflow:
|
|
<ul>
|
|
<li><a href="https://youtube.com/watch?v=qUh507Na9nk">Kernel Root Exploit via a ptrace() and execve() Race Condition</a></li>
|
|
<li><a href="https://youtube.com/watch?v=oIAP1_NrSbY">Reading Kernel Source Code - Analysis of an Exploit</a></li>
|
|
<li><a href="https://youtube.com/watch?v=1hpqiWKFGQs">How CPUs Access Hardware - Another SerenityOS Exploit</a></li>
|
|
</ul>
|
|
</article>
|
|
|
|
<article class="hax0r">
|
|
<h1>2021-02-11: vakzz's full chain exploit</h1>
|
|
<p><a href="https://twitter.com/wcbowling">William Bowling (vakzz)</a> released
|
|
the first ever full chain exploit for SerenityOS, combining a browser bug and
|
|
a kernel bug to get remote root access via opening a web page!
|
|
|
|
<p>Check out vakzz's <a href="https://devcraft.io/2021/02/11/serenityos-writing-a-full-chain-exploit.html">excellent write-up</a>
|
|
for a step-by-step walthrough.
|
|
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-02-13: SerenityOS developer interview: Linus Groh</h1>
|
|
|
|
<p>I wanted to introduce my YouTube audience to more of the SerenityOS
|
|
developer community, and Linus became the first guest in my developer
|
|
interview series!
|
|
|
|
<p>It was really nice to shine a light on someone else doing great work on the project.
|
|
|
|
<center><iframe width="560" height="315" data-src="https://www.youtube.com/embed/oG8RSX1hyCg" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center>
|
|
</article>
|
|
|
|
<article class="developer">
|
|
<h1>
|
|
Developer reflections: <a href="https://twitter.com/linusgroh">Linus Groh</a>
|
|
<img class="avatar nolinkify" src="linusg.png">
|
|
</h1>
|
|
|
|
<p>One of my favorite aspects of the past year of SerenityOS development
|
|
is the overall progress on the browser! There's still a ton of work to
|
|
do, but we're starting to get more and more websites into a recognizable
|
|
shape - compared to a year ago, the number of blank pages and crashes
|
|
on load is reduced considerably.
|
|
|
|
<p>It's also one of the most collaborative subsystems: everything from
|
|
improving spec compliance in our JavaScript engine and adding some
|
|
basic optimizations to implementing countless Web APIs, and continuous
|
|
work on CSS and DOM has been a team effort. It's great to see everyone
|
|
get comfortable, explore, and eventually become experts in their
|
|
favorite topics of browser and JS engine development!
|
|
|
|
<p>It's been so much fun building all these things together, and I'm
|
|
excited to see how far we can get in another year :^)
|
|
</article>
|
|
|
|
|
|
<article>
|
|
<h1>2021-03-06: Classic game "port": Diablo</h1>
|
|
|
|
<p>DevilutionX is a reverse engineered "port" of the classic game Diablo.
|
|
I ported it to SerenityOS and captured the process in a video.
|
|
To date, this is my most viewed video and thousands of people discovered
|
|
the project through this video.
|
|
<center><iframe width="560" height="315" data-src="https://www.youtube.com/embed/ZOzZ8R4gphE" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center>
|
|
|
|
<p>I also finally beat the game!
|
|
|
|
<p><img src="2021-03-06.png">
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-04-01: A new direction for the project</h1>
|
|
|
|
<p>On April 1st, I posted a video announcing a new visual and spiritual direction
|
|
for the SerenityOS project. Most people got the joke :^)
|
|
|
|
<center><iframe width="560" height="315" data-src="https://www.youtube.com/embed/a-WXzLKv_rc" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center>
|
|
</article>
|
|
|
|
<article>
|
|
<h1>
|
|
2021-04-10: Opening a SerenityOS Discord server
|
|
<img class="avatar nolinkify" src="yakbait.png">
|
|
</h1>
|
|
|
|
<p>We decided to try out Discord after seeing how it was used to great effect
|
|
in the <a href="https://ziglang.org">Zig language</a> community.
|
|
|
|
<p>It's been a huge success! While our IRC channel peaked at about 170 users,
|
|
we've got well over 4000 members on Discord, and it's helped us reach new
|
|
levels of collaboration that were simply not possible with IRC.
|
|
|
|
<p>It has also spawned an extremely nerdy culture of <a href="https://github.com/kleinesfilmroellchen/yaksplained">yak-related memes</a>.
|
|
|
|
<p><img src="2021-04-10.png">
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-04-18: Interviewed on "Systems with JT"</h1>
|
|
|
|
<p>Programming language wizard <a href="https://twitter.com/jntrnr">JT</a> invited me for an live interview
|
|
about SerenityOS and everything around it. It was my first live interview, and I was kinda nervous
|
|
but I think it went well!
|
|
|
|
<p>JT also did a <a href="https://www.youtube.com/watch?v=TtV86uL5oD4">heartwarming video review</a> of SerenityOS back around Christmas.
|
|
|
|
<center><iframe width="560" height="315" data-src="https://www.youtube.com/embed/5h8bo9OxCwI" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center>
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-04-26: More project maintainers</h1>
|
|
|
|
<p>In the interview with JT, one of the things that came up was my own
|
|
scalability as a project maintainer. Up until this point I had been doing
|
|
all the PR review and merging myself.
|
|
|
|
<p>After talking about it with JT, I realized that I needed to ask for
|
|
some help from a handful of trusted contributors. It was scary to give up
|
|
a bit of control, but in retrospect it's one of the best decisions I've made. :^)
|
|
|
|
<p>At the time of writing, we now have five maintainers in addition to myself (in alphabetical order):
|
|
<ul>
|
|
<li><a href="https://twitter.com/the_semicolon_">Ali Mohammadpur</a></li>
|
|
<li><a href="https://twitter.com/bgianf">Brian Gianforcaro</a></li>
|
|
<li><a href="https://twitter.com/gunnarbeutner">Gunnar Beutner</a></li>
|
|
<li><a href="https://twitter.com/horowitz_idan">Idan Horowitz</a></li>
|
|
<li><a href="https://twitter.com/linusgroh">Linus Groh</a></li>
|
|
</ul>
|
|
|
|
<p>They each bring their own expertise and passion to the project, and they've been doing a great job
|
|
at keeping the project moving forward while growing.
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-05-16: Some GUI face-lifts</h1>
|
|
|
|
<p>Sometimes I like to pick out a part of the GUI that is particularly weak
|
|
and spend some time on improving it. Here I was working on the PixelPaint
|
|
application, and also the system shutdown dialog.
|
|
|
|
<p><img src="2021-05-16.png">
|
|
<p><img src="2021-05-16-2.png">
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-05-27: Linus gets on GitHub Sponsors</h1>
|
|
|
|
<p>Linus becomes the second person to accept <a href="https://github.com/sponsors/linusg">sponsorships</a>
|
|
for his SerenityOS work. More people getting sponsored to work on SerenityOS is super cool!
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-05-28: I quit my job to work on SerenityOS full time!</h1>
|
|
<p>As of May of 2021, I'm receiving enough in donations to be able to support
|
|
myself while working full-time on SerenityOS!
|
|
|
|
I wrote a <a href="https://awesomekling.github.io/I-quit-my-job-to-focus-on-SerenityOS-full-time/">blog post about it here</a> and people were very
|
|
<a href="https://www.osnews.com/story/133492/serenityos-founder-and-main-developer-goes-full-time-for-serenityos/">supportive</a>
|
|
<a href="https://news.ycombinator.com/item?id=27317655">around</a>
|
|
<a href="https://www.reddit.com/r/SerenityOS/comments/nn1id7/i_quit_my_job_to_focus_on_serenityos_full_time/">the</a>
|
|
<a href="https://lobste.rs/s/lsumm4/i_quit_my_job_focus_on_serenityos_full_time">web</a>.
|
|
|
|
<p>I'm extremely grateful for all the support, and it's super exciting to be
|
|
able to focus on this full time! Massive thanks to everyone who has supported
|
|
me over the years! If you would like to help me out as well, check out
|
|
the links at the bottom of this page.
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-06-12: Interview on Zig SHOWTIME!</h1>
|
|
|
|
<p>I was a guest on the <a href="https://zig.show/">Zig SHOWTIME</a> variety show
|
|
from the <a href="https://ziglang.org">Zig language</a> community. The theme was
|
|
"tech, taste and soul" and the interview lasted almost 3 hours. Exhausting but fun!
|
|
|
|
<center><iframe width="560" height="315" data-src="https://www.youtube.com/embed/e_hCJI__q_4" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center>
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-06-30: 64-bit mode activated!</h1>
|
|
|
|
<p>Up until this point, SerenityOS was a 32-bit x86-only system. Then came x86_64,
|
|
much thanks to the hard work of <a href="https://twitter.com/gunnarbeutner">Gunnar Beutner</a>
|
|
who decided that the port was <i>going to happen</i>, and then didn't stop until it was up and running!
|
|
|
|
<p><img src="x86_64.png">
|
|
</article>
|
|
|
|
<article class="developer">
|
|
<h1>
|
|
Developer reflections: <a href="https://twitter.com/bgianf">Brian Gianforcaro</a>
|
|
<img class="avatar nolinkify" src="bgianf.jpg">
|
|
</h1>
|
|
|
|
<p>The past year of Serenity development has been super exciting! One of my favorite things
|
|
to happen was the bring up of the x86_64 Kernel. Andreas started making baby steps in Feb 2021,
|
|
followed by others contributing additional fixes, until around Jun 2021 when
|
|
<a href="https://twitter.com/gunnarbeutner">Gunnar Beutner</a> started contributing tons
|
|
of patches and with the help of many others got the system booting and running on x86_64.
|
|
In my mind this was a significant symbolic step for the project and the community, onboarding
|
|
another architecture makes the system a bit more real in my mind.
|
|
|
|
<p>From the community perspective I found it very inspiring how Gunnar just took the lead and
|
|
started fixing issues left and right. The community saw the momentum and started working
|
|
on fixes as well, and everyone together got the system running.
|
|
|
|
<p>I wish Andreas, the SerenityOS project and community, continued success and here's hoping
|
|
for another fruitful year of fun and progress. With the
|
|
<a href="https://github.com/SerenityOS/serenity/pull/10276">nascent aarch64 port</a> under way by
|
|
<a href="https://twitter.com/thakis">Nico Weber</a>, and the countless other exciting things
|
|
folks are working on, I'm excited to see what the next year has in store! :^)
|
|
</article>
|
|
|
|
|
|
<article>
|
|
<h1>2021-07-08: SerenityOS Office Hours</h1>
|
|
|
|
<p>After an interesting back & forth "discussion" with my YouTube audience
|
|
that started with the question "Am I losing touch with the audience?",
|
|
I decided to put some serious effort into connecting with the audience.
|
|
|
|
<p>After some experimentation, I finally arrived at the <b>SerenityOS Office Hours</b>
|
|
format. This is a weekly Q&A livestream that I do every Friday at 4pm Swedish Time.
|
|
People are invited to ask any technical or non-technical question about SerenityOS
|
|
and we dig into whatever topics come up. It has been well-received and I've really
|
|
enjoyed being able to answer questions interactively!
|
|
|
|
<p>Check out my <a href="https://www.youtube.com/playlist?list=PLMOpZvQB55bf4FjluKyo01ZnXq75SaU5L">stream archive</a>
|
|
on YouTube. (And come say hi when I'm live some time!)
|
|
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-07-08: A world map of SerenityOS hackers</h1>
|
|
|
|
<p>Linus created a <a href="https://usermap.serenityos.org/">collaborative map</a>
|
|
of SerenityOS developers & users around the world.
|
|
|
|
<p><a href="https://usermap.serenityos.org"><img src="usermap.png"></a>
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-07-20: TrueType renderer improvements</h1>
|
|
|
|
<p>While I'm a big fan of bitmap fonts personally, I did spend some time working
|
|
on our TrueType renderer, fixing up things like vertical alignment and glyph sizes.
|
|
|
|
<p>I also did some work to support the <b style="font-family: Tahoma, sans-serif">Microsoft Tahoma</b>
|
|
and <b style="font-family: 'JetBrains Mono', sans-serif">JetBrains Mono</b> typefaces,
|
|
seen in this screenshot!
|
|
|
|
<p><img src="2021-07-20.png">
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-07-26: Building a "Settings" app</h1>
|
|
|
|
<p>Until this point, all the various settings dialogs were scattered
|
|
around the system menu. I decided it was time to collect them in a
|
|
simple Settings application instead. I think it turned out quite nice!
|
|
|
|
<p><img src="2021-07-26.png">
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-07-26: SerenityOS developer interview: Ali Mohammadpur</h1>
|
|
|
|
<p>I did another developer interview video! This time with Ali,
|
|
who is behind many of the subsystems in Serenity (including TLS,
|
|
line editing, the spreadsheet, and more!)
|
|
|
|
<center><iframe width="560" height="315" data-src="https://www.youtube.com/embed/BL5h6XEIusQ" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center>
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-08-10: Working on multi-core stability</h1>
|
|
|
|
<p>Multi-core support is still immature in SerenityOS, but we have been making some
|
|
strides forward in this area. In this screenshot, I'm successfully running <b>Quake II</b>
|
|
using 2 CPU's simultaneously.
|
|
|
|
<p><img src="2021-08-10.png">
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-08-18: ArsTechnica reviews SerenityOS</h1>
|
|
<p>In mid-August, ArsTechnica ran a <a href="https://arstechnica.com/gadgets/2021/08/not-a-linux-distro-review-serenityos-is-a-unix-y-love-letter-to-the-90s/">feature article on SerenityOS</a>.
|
|
This came out of nowhere and was a lot of fun!
|
|
<p><a href="https://arstechnica.com/gadgets/2021/08/not-a-linux-distro-review-serenityos-is-a-unix-y-love-letter-to-the-90s/"><img class="nolinkify" src="arstechnica.png"></a>
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-08-29: Showing SerenityOS to my nephew</h1>
|
|
|
|
<p>My nephew called me on Skype while I was hacking on something, and I asked
|
|
if he wanted a tour of the operating system. He said yes, and I got this sweet
|
|
screenshot of him excitedly seeing me beat our Breakout game!
|
|
|
|
<p><img src="2021-08-29.png">
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-09-12: 500 contributors on GitHub!</h1>
|
|
|
|
<p>It's wild how many people have <a href="https://github.com/SerenityOS/serenity/graphs/contributors">contributed</a>
|
|
to the project at this point!
|
|
|
|
<p><img src="2021-09-12.png">
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-09-18: Linus Groh interviewed on CppCast</h1>
|
|
|
|
<p>It's been so cool to see <a href="https://linus.dev/posts/my-journey-with-serenityos/">Linus's journey with SerenityOS</a>,
|
|
from not knowing C++ at all 18 months ago, to being interviewed on a major C++ podcast.
|
|
|
|
<center><iframe width="560" height="315" data-src="https://www.youtube.com/embed/YLN0A9hziKQ" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center>
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-09-19: Reading the HTML spec</h1>
|
|
|
|
<p>It's a pretty cool milestone when your browser engine is strong enough
|
|
to download and display the HTML spec itself.
|
|
|
|
<p><img src="2021-09-19.png">
|
|
</article>
|
|
|
|
<article class="developer">
|
|
<h1>
|
|
Developer reflections: <a href="https://twitter.com/horowitz_idan">Idan Horowitz</a>
|
|
<img class="avatar nolinkify" src="idanho.jpg">
|
|
</h1>
|
|
|
|
<p>One of the main subprojects in LibJS that was being worked on in 2021 was support for
|
|
the stage 3 <a href="https://github.com/tc39/proposal-temporal">Temporal proposal</a>,
|
|
which aims to replace the old and awkward <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date">Date API</a>
|
|
with a more modern, unified and fully-featured interface.
|
|
|
|
<p>As a result of the efforts of many contributors (with some of the most notable ones
|
|
being <a href="https://twitter.com/linusgroh">Linus Groh</a>
|
|
and <a href="https://github.com/Lubrsi">Luke Wilde</a>) Serenity's
|
|
LibJS contains the most fleshed out Temporal implementation out of all the popular Javascript engines.
|
|
|
|
</article>
|
|
|
|
<article>
|
|
<h1>2021-10-02: Browser performance work</h1>
|
|
|
|
<p>Lately I've been doing a ton of work on browser performance, trying to
|
|
bring it to a point where it can display complex pages in a somewhat reasonable
|
|
time.
|
|
|
|
<p>Here I am using Profiler to examine what appears to be memory allocation
|
|
performance in our regular expression engine.
|
|
|
|
<p>The profiling system has matured quite a bit during the last year. It now
|
|
has the ability to capture full-system profiles, and we've got more visualizations
|
|
to aid in performance analysis. :^)
|
|
|
|
<p><img src="2021-10-02.png">
|
|
</article>
|
|
|
|
<article>
|
|
<h1>Monthly update videos</h1>
|
|
|
|
<p>The tradition of the monthly SerenityOS update video is alive and well,
|
|
ever since my first-ever update video in March 2019.
|
|
|
|
<p>Something new this year is that for the last couple of videos, I've been
|
|
joined by Linus in the videos. The sheer amount of things happening month-to-month
|
|
was getting hard to cover by myself, and it's great to share the stage with
|
|
someone else who cares deeply about the project as well.
|
|
|
|
<p><ul>
|
|
<li><a href="https://www.youtube.com/watch?v=L-IFGxw-kV4">SerenityOS update (October 2020)</a></li>
|
|
<li><a href="https://www.youtube.com/watch?v=AYZ1Wqb9p2w">SerenityOS update (November 2020)</a></li>
|
|
<li><a href="https://www.youtube.com/watch?v=7aof37-uCRE">SerenityOS update (December 2020)</a></li>
|
|
<li><a href="https://www.youtube.com/watch?v=Arfy5iX0wgI">SerenityOS update (January 2021)</a></li>
|
|
<li><a href="https://www.youtube.com/watch?v=M81Hy5UP2nA">SerenityOS update (February 2021)</a></li>
|
|
<li><a href="https://www.youtube.com/watch?v=2OdYWoXIVd0">SerenityOS update (March 2021)</a></li>
|
|
<li><a href="https://www.youtube.com/watch?v=KehSJ_fdTxU">SerenityOS update (April 2021)</a></li>
|
|
<li><a href="https://www.youtube.com/watch?v=O3MtPgTUOC8">SerenityOS update (May 2021)</a></li>
|
|
<li><a href="https://www.youtube.com/watch?v=QI3o2G8MPbQ">SerenityOS update (June 2021)</a></li>
|
|
<li><a href="https://www.youtube.com/watch?v=nUCpt6F5q-s">SerenityOS update (July 2021)</a></li>
|
|
<li><a href="https://www.youtube.com/watch?v=GT2SO-X2Wik">SerenityOS update (August 2021)</a></li>
|
|
<li><a href="https://www.youtube.com/watch?v=y4bsO4E0G38">SerenityOS update (September 2021)</a></li>
|
|
</ul>
|
|
|
|
<p>Check out the <a href="https://www.youtube.com/playlist?list=PLMOpZvQB55bfp6ykOLayLqLrjcpv_Sw3P">playlist on YouTube</a>
|
|
for the full archive!
|
|
</article>
|
|
</main>
|
|
|
|
<footer>
|
|
<h2>Thanks</h2>
|
|
|
|
<p>To all the awesome people who have particpated in the last year, writing code,
|
|
bug reports, documentation, commenting/liking/sharing my videos, sending letters,
|
|
chilling on Discord, coming to the Office Hours livestreams, telling your friends,
|
|
etc, thank you all!
|
|
|
|
<p>I'm unbelievably grateful for all the love and support this project receives!
|
|
|
|
<p>And also, a huge <b>thank you!</b> to everyone who has supported me via
|
|
<a href="https://github.com/sponsors/awesomekling">GitHub Sponsors</a>,
|
|
<a href="https://patreon.com/serenityos">Patreon</a>,
|
|
and <a href="https://paypal.me/awesomekling">PayPal</a>. Thanks to you, I'm able
|
|
to do this full time and I'm excited to see where we can push this project!
|
|
|
|
<p>All right, let's keep moving forward into year number 4!
|
|
|
|
<p><i>Andreas Kling, 2021-10-10</i>
|
|
<br><a href="https://github.com/awesomekling">GitHub</a> |
|
|
<a href="https://youtube.com/c/AndreasKling">YouTube</a> |
|
|
<a href="https://twitter.com/awesomekling">Twitter</a> |
|
|
<a href="https://patreon.com/serenityos">Patreon</a> |
|
|
<a href="https://paypal.me/awesomekling">PayPal</a> |
|
|
<a href="https://store.serenityos.org">Store</a>
|
|
|
|
<br><br>
|
|
</footer>
|
|
<script>
|
|
// Don't insert YouTube iframes on serenity, since we can't play the videos yet anyway.
|
|
if (navigator.platform != "SerenityOS") {
|
|
for (let iframe of document.getElementsByTagName("iframe")) {
|
|
iframe.setAttribute("src", iframe.getAttribute("data-src"));
|
|
}
|
|
}
|
|
|
|
// Linkify <img> elements without the 'nolinkify' class.
|
|
for (let img of document.querySelectorAll("article img:not(.nolinkify)")) {
|
|
let a = document.createElement("a");
|
|
a.href = img.src;
|
|
img.parentNode.replaceChild(a, img);
|
|
a.appendChild(img);
|
|
}
|
|
|
|
let stack = document.getElementsByClassName("yakstack")[0];
|
|
stack.onmousedown = function() { stack.src = "yakoverflow.png"; }
|
|
</script>
|
|
</body>
|
|
</html>
|