diff --git a/content/blog/2024-12-21-unikraft-releases-v0.18.0.mdx b/content/blog/2024-12-21-unikraft-releases-v0.18.0.mdx
new file mode 100644
index 00000000..d0f2d210
--- /dev/null
+++ b/content/blog/2024-12-21-unikraft-releases-v0.18.0.mdx
@@ -0,0 +1,138 @@
+---
+title: "Unikraft releases v0.18.0 (Helene)"
+description: |
+ This release contains features and improvements to Unikraft.
+publishedDate: 2024-12-21
+authors:
+- Michalis Pappas
+- Ștefan Jumărea
+- Răzvan Deaconescu
+tags:
+- release
+- announcement
+---
+
+We are proud to announce the update version of Unikraft, v0.18.0.
+
+This release comes packed with features related to security, virtual filesystem and general application support.
+It contains plenty of fixes that improve the stability and application support of Unikraft.
+
+In this blog post, we present the new features available in Unikraft.
+For a full breakdown, please check out the [changelog](https://github.com/unikraft/unikraft/compare/RELEASE-0.17.0...RELEASE-0.18.0).
+
+### Integrated Debug Support with GDB Stub
+
+_This feature was championed by [Thassilo Schulze](https://github.com/thass0) with great support from [Michalis Pappas](https://github.com/michpappas) and [Simon Kuenzer](https://github.com/skuenzer).
+
+Unikraft v0.18 introduces native support for GDB, allowing developers to debug applications and system-level code seamlessly, even on Virtual Machine Monitors (VMMs) and hypervisors that don't offer built-in debug facilities. Debugger support is provided by an implementation of a GDB stub within `libukdebug`, which enables direct communication with a GDB client over a serial connection. For more information on enabling and confguring the GDB stub see [libukdebug's README.md](https://github.com/unikraft/unikraft/blob/staging/lib/ukdebug/README.md).
+
+### Abstraction for Console Devices
+
+_This feature was championed by [Thassilo Schulze](https://github.com/thass0) with great support from [Michalis Pappas](https://github.com/michpappas) and [Simon Kuenzer](https://github.com/skuenzer).
+
+The newly introduced `libukconsole` provides an abstraction layer for consoles. The implementation of `COM` for `x86_64` has been merged with the `ns16550` driver, and all console drivers have been updated to implement the `ukconsole` driver API. This is a long anticipated feature that allows efficient management of console devices, and enables the addition of new features, with the GDB stub being the first one to utilize this subsystem.
+
+### Further improvements of libukrandom
+
+_This feature was championed by [Michalis Pappas](https://github.com/michpappas) with great support from [Alex Apostolescu](https://github.com/Alex-deVis), [Maria Pana](https://github.com/mariapana), [Simon Kuenzer](https://github.com/skuenzer), and [Stefan Jumarea](https://github.com/StefanJum)._
+
+This release continues on the improvents introduced in Unikraft v0.17 for cryptographically secure randomness. `libukrandom` now includes a driver API, and the implementation of CPU-generated randomness has been reworked into conforming drivers. For more flexibility, the driver API introduces fallback operations: On x86_64, `RDSEED` can now fall back to `RDRAND`, addressing common issues faced by users running on legacy machines without `RDSEED` support, or those using TCG emulation on older versions of QEMU.
+
+In addition to the above, it is now possible to seed the CSPRNG via Unikraft's command-line, or through the device tree blob.
+
+Finally, the CSPRNG has been updated to now use 20 rounds (ChaCha20), and an implementation of the test vectors of [RFC8439](https://datatracker.ietf.org/doc/html/rfc8439) is available to execute via `libuktest`.
+
+For more info see the new documentation at [drivers/ukrandom/lcpu](https://github.com/unikraft/unikraft/tree/staging/drivers/ukrandom/lcpu/README.md) and [lib/ukrandom](https://github.com/unikraft/unikraft/tree/staging/lib/ukrandom/README.md).
+
+### Early Initialization Framework
+
+_This feature was championed by [Michalis Pappas](https://github.com/michpappas) with great support from [Andrei Stan](https://github.com/andreistan26), [Oleksii Moisieiev](https://github.com/oleksiimoisieiev), [Sergiu Moga](https://github.com/mogasergiu), and [Simon Kuenzer](https://github.com/skuenzer).
+
+`libukboot` introduces `earlytab`, a lightweight framework for early initialization. This complements the existing `inittab`, with specific focus on the initialization of early devices and their dependencies.
+
+`libuklibparam` has been refactored to allow command-line parsing during early initialization. This additionally fixes a limitation of the previous registration mechanism where all parameters had to be registered from a single file. `libuklibparam` is assigned the highest (earliest) priority, to ensure that drivers and libraries in subsequent stages have access to Unikraft's command-line parameters. Notice that for the time being this has the side-effect of information printed by `libuklibparam` to be lost, as `earlycon` is registered to a later priority. This will be resolved once `libukprint` is introduced, as that library will provide a console buffer.
+
+Initialization of early devices have been migrated to `earlytab`. Serial console drivers are updated to register with `earlytab` when early console support is enabled. Similarly, drivers that provide secure randomness initialize `libukrandom` at early init, to fulfil the requirement of security-critical mechanisms for early randomness.
+
+Overall, the introduction of `earlytab` marks a significant step towards a unified and coordinated initialization process, which is a requirement for upcoming features. Most notably, `earlytab` will eventually replace the intermediate jump from boot code to platform-specific initialization, with platforms being able to register initialization calls directly with `earlytab`. Early adopters of this mechanism in this release are the UART and VGA console devices of KVM, and the hypervisor console of Xen.
+
+### Statistics for libuksched and libukfalloc
+
+_This feature was championed by [Michalis Pappas](https://github.com/michpappas)_ with great support from [Cezar Craciunoiu](https://github.com/craciunoiuc), [Florin Postolache](https://github.com/flpostolache), and [Simon Kuenzer](https://github.com/skuenzer).
+
+Following previous work on `libuknetdev`, this release comes with updates on`libusched` and `libukfalloc` to export statistics that provide insight on the performance and overall behavior of the system.
+
+`libuksched` defines the set of statistics that a given scheduler implementation should provide. Metrics include the number of schedules, yields, context switches to processes and the idle thread. The cooperative scheduler implementation, `libukschedcoop`, has been updated to export these metrics.
+
+Similarly, `libukfalloc` has been updated to define a set of per-instance as well as system-wide statistics. The buddy implementation, `libukfallocbuddy`, is updated to export these statistics where needed.
+
+In both cases, statistics are provided via the `libukstore`. For For a general descriptions on how to access the exported stats, see the documentation of `libukstore` at [lib/ukstore/README.md](https://github.com/unikraft/unikraft/blob/staging/lib/ukstore/README.md).
+
+### Known issues
+
+* [QEMU 9 doesn't boot C HTTP program on Ubuntu 22.04](https://github.com/unikraft/unikraft/issues/1557)
+* [lib/ukallocbuddy: Boot error message for Nginx (QEMU, KVM, x86_64) ](https://github.com/unikraft/unikraft/issues/1505)
+* [plat/kvm does not boot on Firecracker 0.10.0-dev on arm64](https://github.com/unikraft/unikraft/issues/1488)
+
+For a full list of issues see: https://github.com/unikraft/unikraft/issues
+
+### Catalog Update
+
+We updated the [application `catalog`](https://github.com/unikraft/catalog) with multiple application runtimes, including MariaDB, MongoDB, Java, Grafana, Zig.
+The application catalog hosts application runtimes and examples running with Unikraft.
+Generally, we use [KraftKit](https://github.com/unikraft/kraftkit) as the tool to build and run unikernel images for these applications.
+
+### `catalog-core` - A Catalog for Core Developers, Reviewers, Testers and Maintainers
+
+[`catalog-core`](https://github.com/unikraft/catalog-core) is a catalog of Unikraft applications that are set up, configured, built and run using first principles tools: Make, GCC, Clang, KConfig, QEMU, Firecracker, Xen; that is, not using KraftKit. Each directory belongs to a given application and it typically consists of source code, `Makefile`, `Makefile.uk`, filesystem and a `README.md` file with instructions.
+
+`catalog-core` is targeted towards Unikraft core developers (i.e. developers of the [`unikraft` core repository](https://github.com/unikraft/unikraft) or [library repositories](https://github.com/search?q=topic%3Alibrary+org%3Aunikraft&type=Repositories)), maintainers, testers and those who want to learn about the internals of Unikraft. Application and tooling developers and general users should use the [official `catalog` repository](https://github.com/unikraft/catalog).
+
+`catalog-core` current consists of an initial set of applications to be built and run using first principles tools.
+It also contains scripts to automate the building, running and testing of applications, Unikraft core and libraries.
+
+### Community Activities
+
+#### OmniOpenCon 2024
+
+As part of [OmniOpenCon 2024](https://omniopencon.org/), we organised a workshop, where the participants took some first steps into building and running an application using Unikraft.
+
+We also had a talk beforehand, `Efficient, Effective and Fun Computing with Unikernels`, demonstrating how easy it is to build, package, run and deploy common applications with Unikraft, focusing on two primary areas: cloud computing and embedded development.
+
+OmniOpenCon 2024 also hosted an open source hackathon, with about 20 participants, with some working on Unikraft.
+
+#### Unikraft Summer Workshop 2024
+
+[Unikraft Summer Workshop 2024 (*USW'24*)](https://unikraft.org/hackathons/usw24) is a **free and virtual** workshop held by members of the Unikraft community.
+It focuses on cloud-native applications and on the unikernel technology that powers efficient and high performance cloud deployments.
+
+The three-week event holds a number of starter tutorials and workshops on how to configure, build, run, deploy and debug cloud applications using Unikraft.
+
+This year, we had 11 students that took part in the Unikraft Summer Workshop.
+At the end of the three-week event, we organised a hackathon, were the students were able to contribute to the project.
+
+#### Vienna Unikraft Workshop
+
+On December 708, 2024, we organised the [Vienna Unikraft Workshop](https://unikraft.org/hackathons/2024-12-vienna), together with [SBA Research](https://www.sba-research.org/).
+The workshop took place as an in-person event, at `SBA Research`.
+Members of the Unikraft community were there, as well as our hosts from `SBA Research`.
+
+We spent the first day getting people accustomed to the Unikraft project, following some guides in order to build, run and deploy cloud applications.
+
+The second day was focused on participants contributing to the projects, porting new applications, finding and fixing issues, etc.
+During this, [`Tor`](https://github.com/unikraft/catalog/pull/146) and [`Zero MQ`](https://github.com/unikraft/catalog/pull/147) were ported, and several other issues were found and fixed.
+
+#### GSoC 2024
+
+As part of Google Summer of Code 2024, Unikraft had 5 projects approved.
+We've had 16 application, out of which 5 were selected.
+
+The 5 projects are:
+
+* `Linux x86 Boot Protocol Support`, by [Mihnea Firoiu](https://github.com/Mihnea0Firoiu)
+* `Synchronization Support in Internal Libraries`, by [Yang Hu](https://github.com/huyang531)
+* `Supporting User-provided, Long-lived Environmental Variables for Unikraft Builds`, by [Ujjwal Mahar](https://github.com/UjjwalMahar)
+* `Multiboot2 Support in Unikraft`, by [Maria Pană](https://github.com/mariapana)
+* `UEFI Graphics Output Protocol Support in Unikraft`, by [Sriprad Potukuchi ](https://github.com/procub3r).
+
+All the participants described their work in detail in multiple blog posts that you can find on the [Unikraft blog page](https://unikraft.org/blog).
diff --git a/content/releases/v0.18.0.mdx b/content/releases/v0.18.0.mdx
new file mode 100644
index 00000000..a6cf59c7
--- /dev/null
+++ b/content/releases/v0.18.0.mdx
@@ -0,0 +1,86 @@
+---
+version: 0.18.0
+releaseDate: 2024-12-21
+codename: Helene
+commit: 424eb3d920bfbe9ca0dc269750fba4a989ead184
+blogPost: /blog/2024-12-21-unikraft-releases-v0.18.0
+changelog: https://github.com/unikraft/unikraft/compare/RELEASE-0.17.0...RELEASE-0.18.0
+---
+
+We are proud to announce the latest version update of Unikraft, v0.18!
+This release comes with plenty of new features and updates.
+
+Here is the full updates list:
+
+### 🚀 New Features
+
+* `lib/vfscore`: Support embedded initrd with custom compiled-in fstabs ([#1540](https://github.com/unikraft/unikraft/pull/1540)) by @skuenzer
+* `drivers/*`: Adopting serial driver configuration and making Xen x86_64 (PV) work again ([#1501](https://github.com/unikraft/unikraft/pull/1501)) by @skuenzer
+* `libukrandom`: Introduce driver for CPU-generated entropy + misc. fixes ([#1496](https://github.com/unikraft/unikraft/pull/1496)) by @michpappas
+* `lib/ukdebug`: Add GDB stub to Unikraft ([#1479](https://github.com/unikraft/unikraft/pull/1479)) by @thass0
+* `lib/uksched`: Export stats via `ukstore` ([#1477](https://github.com/unikraft/unikraft/pull/1477)) by @michpappas
+* `lib/ukboot`: Introduce early init bootstage ([#1472](https://github.com/unikraft/unikraft/pull/1472)) by @michpappas
+* `lib/uklibparam`: Refactor parameter registration ([#1471](https://github.com/unikraft/unikraft/pull/1471)) by @michpappas
+* `lib/ukconsole`: Add generic console device interface ([#1464](https://github.com/unikraft/unikraft/pull/1464)) by @thass0
+* `support/qemu-guest`: Enable `RDRAND`, `RDSEED` for x86 TCG ([#1459](https://github.com/unikraft/unikraft/pull/1459)) by @skuenzer
+* `lib/ukfalloc`: Export stats via `uk_store` ([#942](https://github.com/unikraft/unikraft/pull/942)) by @michpappas
+
+### 🐛 Bug Fixes & Improvements
+
+* `lib/syscall_shim`: Fix C++ build error with Clang ([#1559](https://github.com/unikraft/unikraft/pull/1559)) by @razvand
+* `lib/vfscore`: Fix missing syscall declaration ([#1556](https://github.com/unikraft/unikraft/pull/1556)) by @andreittr
+* `lib/ukrandom`: Improve boot and diagnostic messages ([#1554](https://github.com/unikraft/unikraft/pull/1554)) by @michpappas
+* `lib/ukrandom`: Add `README.md` ([#1551](https://github.com/unikraft/unikraft/pull/1551)) by @michpappas
+* `lib/ukschecoop`: Remove invalid assertion ([#1550](https://github.com/unikraft/unikraft/pull/1550)) by @michpappas
+* `lib/posix-pipe`: Fix ref leak on pipe creation ([#1539](https://github.com/unikraft/unikraft/pull/1539)) by @andreittr
+* `.github/workflows`: Wait once before checking ([#1538](https://github.com/unikraft/unikraft/pull/1538)) by @craciunoiuc
+* `drivers/ukconsole/vga`: Add initial sanity check ([#1530](https://github.com/unikraft/unikraft/pull/1530)) by @florommel
+* `lib/uklibparam`: Namespace symbols to avoid conflicts ([#1526](https://github.com/unikraft/unikraft/pull/1526)) by @michpappas
+* `plat/xen`: Use `-lgcc` for Xen ARM64 builds with fp emulation ([#1525](https://github.com/unikraft/unikraft/pull/1525)) by @razvand
+* `plat/xen`: Include `fp_arm64.c` in FPSIMD Xen ARM64 builds ([#1523](https://github.com/unikraft/unikraft/pull/1523)) by @razvand
+* `plat/xen`: Fix implicit `int` cast build error ([#1518](https://github.com/unikraft/unikraft/pull/1518)) by @andreistan26
+* `drivers/xen`: Select `XEN_GNTTAB` as dependency when used ([#1517](https://github.com/unikraft/unikraft/pull/1517)) by @andreistan26
+* `.github/workflows`: Show message before starting catalog loop ([#1516](https://github.com/unikraft/unikraft/pull/1516)) by @craciunoiuc
+* `plat/kvm`: Fix `Kconfig` dependency warning on Firecracker ([#1504](https://github.com/unikraft/unikraft/pull/1504)) by @michpappas
+* `drivers/ukconsole/ns16550`: Fix `Kconfig` warnings on invalid `choice` ([#1503](https://github.com/unikraft/unikraft/pull/1503)) by @michpappas
+* `include/uk/arch`: Define `bool` types for C++ compilers ([#1500](https://github.com/unikraft/unikraft/pull/1500)) by @StefanJum
+* `libuklibparam`: Fix symbols not present after linkage ([#1499](https://github.com/unikraft/unikraft/pull/1499)) by @michpappas
+* `plat/kvm`: Remove `|isr` flag to prevent build error ([#1497](https://github.com/unikraft/unikraft/pull/1497)) by @razvand
+* `lib/ukdebug`: Add `README.md` to `ukdebug` ([#1492](https://github.com/unikraft/unikraft/pull/1492)) by @thass0
+* `plat/xen`: Fix Arm setup to work with new Xen console ([#1490](https://github.com/unikraft/unikraft/pull/1490)) by @thass0
+* `plat/kvm`: Enable VGA by default on QEMU x86_64 ([#1489](https://github.com/unikraft/unikraft/pull/1489)) by @michpappas
+* `drivers/xen/console`: Update nolibc dependency ([#1487](https://github.com/unikraft/unikraft/pull/1487)) by @razvand
+* `include/uk/arch`: Add kernel `__bool` type ([#1484](https://github.com/unikraft/unikraft/pull/1484)) by @thass0
+* `plat/xen`: Fix implicit conversion on return type ([#1482](https://github.com/unikraft/unikraft/pull/1482)) by @andreistan26
+* `plat/kvm/arm64`: Do not unmask `PSTATE.D` on IRQ entry ([#1481](https://github.com/unikraft/unikraft/pull/1481)) by @michpappas
+* `.github/workflows`: Remove `jq` installation ([#1476](https://github.com/unikraft/unikraft/pull/1476)) by @nderjung
+* `lib/nolibc`: Fix memory bug in `vfscanf` ([#1474](https://github.com/unikraft/unikraft/pull/1474)) by @thass0
+* `drivers/uktty`: Improve early initialization ([#1473](https://github.com/unikraft/unikraft/pull/1473)) by @michpappas
+* Log calls to the `multiboot` and `mkefi` scripts ([#1469](https://github.com/unikraft/unikraft/pull/1469)) by @shym
+* `.github`: Remove `CODEOWNERS` ([#1468](https://github.com/unikraft/unikraft/pull/1468)) by @mschlumpp
+* Fix missing URL ([#1467](https://github.com/unikraft/unikraft/pull/1467)) by @yfenes
+* `drivers/ukbus/pci`: Map PCI regions at runtime ([#1465](https://github.com/unikraft/unikraft/pull/1465)) by @michpappas
+* `lib/vfscore`: Change `faccessat` with `AT_SYMLINK_NOFOLLOW` ([#1462](https://github.com/unikraft/unikraft/pull/1462)) by @robertZamfir601
+* `lib/vfscore`: Fix `renameat` function in vfscore ([#1460](https://github.com/unikraft/unikraft/pull/1460)) by @sebastianion
+* `plat/common/x86`: Use `X86_VIDEO_MEM_START` for SIPI vector allocation ([#1457](https://github.com/unikraft/unikraft/pull/1457)) by @mogasergiu
+* `lib/posix-{process, sysinfo}`: Take fdtab size from `posix-fdtab` instead of vfscore ([#1455](https://github.com/unikraft/unikraft/pull/1455)) by @andreittr
+* `lib/nolibc`: Compile `string.c` with `-O3` ([#1454](https://github.com/unikraft/unikraft/pull/1454)) by @andreittr
+* `include/uk/errptr`: Fix `NULL` being an error pointer ([#1453](https://github.com/unikraft/unikraft/pull/1453)) by @andreittr
+* `build`: Use different progress flags based on the `wget` version ([#1442](https://github.com/unikraft/unikraft/pull/1442)) by @thass0
+* `libs/vfscore`: Fix `dirent64` warning ([#1372](https://github.com/unikraft/unikraft/pull/1372)) by @razvanrus2003
+* `[app-elfloader]`: Handle empty file size loadable segments ([#85](https://github.com/unikraft/app-elfloader/pull/85)) by @mogasergiu
+* `[app-elfloader]`: .github/workflows: Introduce catalog tests ([#78](https://github.com/unikraft/app-elfloader/pull/78)) by @craciunoiuc
+* `[lib-compiler-rt]`: .github/workflows: Introduce catalog tests ([#20](https://github.com/unikraft/lib-compiler-rt/pull/20)) by @craciunoiuc
+* `[lib-libelf]`: .github/workflows: Introduce catalog tests ([#4](https://github.com/unikraft/lib-libelf/pull/4)) by @craciunoiuc
+* `[lib-libuuid]`: .github/workflows: Introduce catalog tests ([#7](https://github.com/unikraft/lib-libuuid/pull/7)) by @craciunoiuc
+* `[lib-lua]`: .github/workflows: Introduce catalog tests ([#10](https://github.com/unikraft/lib-lua/pull/10)) by @craciunoiuc
+* `[lib-lwip]`: Fix #59, invalid pointer for dns addr in gcc14 ([#60](https://github.com/unikraft/lib-lwip/pull/60)) by @cluosh
+* `[lib-lwip]`: .github/workflows: Introduce catalog tests ([#54](https://github.com/unikraft/lib-lwip/pull/54)) by @craciunoiuc
+* `[lib-musl]`: .github/workflows: Introduce catalog tests ([#77](https://github.com/unikraft/lib-musl/pull/77)) by @craciunoiuc
+* `[lib-nginx]`: .github/workflows: Introduce catalog tests ([#16](https://github.com/unikraft/lib-nginx/pull/16)) by @craciunoiuc
+* `[lib-python3]`: .github/workflows: Introduce catalog tests ([#23](https://github.com/unikraft/lib-python3/pull/23)) by @craciunoiuc
+* `[lib-redis]`: .github/workflows: Introduce catalog tests ([#13](https://github.com/unikraft/lib-redis/pull/13)) by @craciunoiuc
+* `[lib-sqlite]`: .github/workflows: Introduce catalog tests ([#9](https://github.com/unikraft/lib-sqlite/pull/9)) by @craciunoiuc
+* `[lib-zlib]`: .github/workflows: Introduce catalog tests ([#12](https://github.com/unikraft/lib-zlib/pull/12)) by @craciunoiuc
+
+A big thank you also to all those who helped in the [review process](unikraft.org/docs/contributing/review-process/): [Alexander Jung](https://github.com/nderjung), [Alex Apostolescu](https://github.com/Alex-deVis), [Andrei Stan](https://github.com/andreistan26), [Andrei Tatar](https://github.com/andreittr), [Cezar Crăciunoiu](https://github.com/craciunoiuc), [Florin Postolache](https://github.com/flpostolache), [Teodor Țeugea](https://github.com/John-Ted), [Maria Pană](https://github.com/mariapana), [Maria Sfîrăială](https://github.com/mariasfiraiala), [Michalis Pappas](https://github.com/michpappas), [Mihnea Firoiu](https://github.com/Mihnea0Firoiu), [Oleksii Moisieiev](https://github.com/oleksiimoisieiev), [Radu Nichita](https://github.com/RaduNichita), [Răzvan Deaconescu](https://github.com/razvand), [Sergiu Moga](https://github.com/mogasergiu), [Simon Kuenzer](https://github.com/skuenzer), [Ștefan Jumărea](https://github.com/StefanJum), [Thassilo Schulze](https://github.com/thass0)
diff --git a/src/components/landing-hero.tsx b/src/components/landing-hero.tsx
index 44a795d4..8f80d3bd 100644
--- a/src/components/landing-hero.tsx
+++ b/src/components/landing-hero.tsx
@@ -245,11 +245,11 @@ export default function LandingHero() {
}}
>
- v0.17.0
+ v0.18.0
Latest Version
- 2.4K+
+ 2.8K+
GitHub Stars
@@ -257,7 +257,7 @@ export default function LandingHero() {
Contributors
- 1.4K+
+ 1.6K+
Discord Members