Hi Genodians,
Thanks Norman for the Roadmap reminder! And thanks to you and all the other community members for your detailed insight in your very motivating plans!
I'll have a try:
Review 2020 ===========
Kernels ~~~~~~~
* Spunky kernel written entirely in Ada * Spunky kernel SPARK compliance * Let further Genode core functionality benefit from Ada/SPARK
I was able to work at this a lot at the beginning of the year, resulting in a presentation and demonstration at FOSDEM 2020 in February [8][10]. The RPC, Signalling, CPU Scheduling, Data Structures and a good part of the Clock of Spunky made it to Ada [9][11]. Also the Sculpt OS is running smoothly with the kernel [10]. Unfortunately from that point on other projects consumed most of my time and I had to postpone the "Ada-for-core" project again and again. However, I'm still motivated to continue with this project as soon as possible.
Block encryption ~~~~~~~~~~~~~~~~
* Towards using the Consistent Block Encrypter (CBE) on a daily basis
Unexpectedly, this project consumed most of my time this year. We did a complete rework of the internal CBE design and added a lot of functionality: Online rekeying [1][7], online resizing [2][7], a trust anchor API and a trust anchor reference implementation [3], a comprehensive scriptable test environment [3], a VFS integration of the CBE and of each of its back ends [3][7], and a fancy demo featuring a Linux VM on a CBE device in Sculpt [4][5][7].
As a side effect of the project, we also extended our Ada/SPARK runtime support and established an Ada/SPARK coding style [6].
Network stack ~~~~~~~~~~~~~
* Design review of the NIC router
Although this is an important topic, other issues with the NIC router and networking in Genode in general turned out to be more important for now.
* NIC router functionality
There were several smaller features missing with the NIC router. We could add advanced means of forwarding DNS server addresses with the NIC router, add support for ARP-less domains, and consolidate the link state propagation.
* Turn NIC drivers into Uplink session clients
This work is part of our project "restartable NIC drivers" and it is still in progress, but almost all NIC drivers are already adapted and I'm positive that we'll have restartable NIC drivers in the next Sculpt release.
Hardware support ~~~~~~~~~~~~~~~~
* initializing Intel Hardware P-States (HWP)
My new Lenovo T490 motivated me to do something about supporting Intel HWP and although it took some time, it turned out well, hopefully not only to my own benefit [12]
Timing stack ~~~~~~~~~~~~
* Clean up Timeout framework * Consolidate multithreading support in timeout framework
These also turned out to require some time. Especially the testing and debugging afterwards. But now there are new automated tests that demonstrate that multithreading works well and the framework could also be significantly simplified. Was worth it.
My plans so far for 2021 ========================
* Finish making NIC drivers restartable in Sculpt
* Establish new API for network sessions (NIC, Uplink) inspired by the modern Block-Request APIs in order to simplify the use of network sessions and eliminate corner cases
* Graphical front end and simpler integration in general for the Consistent Block Encrypter in Sculpt
* Write a comprehensive CBE documentation
* Revive the Spunky project and bring it into Genode mainline
* Enhance Ada/SPARK runtime support and use Ada/SPARK for further fundamental code
Cheers, Martin
[1] http://genodians.org/m-stein/2020-06-07-cbe-rekeying [2] http://genodians.org/m-stein/2020-06-07-cbe-rekeying [3] https://genode.org/documentation/release-notes/20.08#Consistent_Block_Encryp... [4] https://genode.org/documentation/release-notes/index [5] https://genodians.org/m-stein/2020-06-17-cbe-linux-vm-video [6] https://genode.org/documentation/release-notes/20.08#Ada_SPARK_support [7] https://genode.org/documentation/release-notes/20.05#Feature-completeness_of... [8] https://archive.fosdem.org/2020/schedule/event/ada_spunky/ [9] https://genodians.org/m-stein/2019-05-09-spunky-1 [10] https://genodians.org/m-stein/2020-02-03-spunky-3 [11] http://genodians.org/m-stein/2019-12-20-spunky-2 [12] https://genode.org/documentation/release-notes/20.11#Hardware_P-State_suppor...