Diversity, Finally

uk: Комп'ютерні науки

description: What if we decided to solve, once and for all, the problem of underrepresentation in the Go community of women, gender minorities, people of color, or any other group the same way we handle our problems in production, by identifying "bugs" and then fixing them? Can it even be done? What if we took the engineering approach? Ronna is planning to convince you it's not a matter of if, but a matter of how, and we are going to analyze some of the statistics, find where the problems actually lay, and build a Trello card full of achievable tasks to address them.

uk: вхід без авторизації


Stefan Schimanski

type: Person

cs: Informatika

de: Informatik

fi: tietojenkäsittelytiede

uk: Комп'ютерні науки

en: Computer Science

fr: Informatique

da: Datalogi

es: Ciencias de la Computación

nl: Informatica

cs: Technické vědy

de: Ingenieurwissenschaften

fi: tekniikka

uk: Інженерія

en: Engineering Sciences

fr: Ingénierie

da: Ingeniørvidenskab

es: Ingeniería

nl: Engineering

description: Kubernetes is built using Golang. CustomResourceDefinitions are the primary extension points for bringing custom data into a Kubernetes cluster. This hands-on talk is about the workflow of API definitions in Golang, generation of OpenAPI schemas as part of the CRD, client and informer generation and how to use these to process data in real-time using logic implemented in Golang controllers.

TIB AV-Portal

type: Service

type: WebContent

type: MediaObject

@language: en

cs: přihlášení není vyžadováno

de: keine Anmeldung erforderlich

uk: вхід без авторизації

en: no login required

nl: geen login vereist

name: From Go to Kubernetes CRDs and Back: Workflow for building strongly typed APIs

FOSDEM VZW

type: Organization

cs: Video

de: Video

fi: Video

uk: Відео

en: Video

fr: Vidéo

da: Video

nl: Video

es: Video


uk: Комп'ютерні науки

description: Grafana configuration can nowadays be fully done as code, which enables code review, code reuse, and in general better workflows when working with dashboards. This talk will present Grafonnet, a Jsonnet library to generate Grafana dashboards and some tips and tricks about how to use it efficiently and how to manage fully your grafana instances from code. We will also explore how Jsonnet and Grafonnet enable collaboration on dashboards, using Mixins and explain how to push dashboards to Grafana, either using Kubernetes, or direct to the Grafana API.

uk: вхід без авторизації

name: Grafana-As-Code: Fully reproducible Grafana dashboards with Grafonnet


uk: Комп'ютерні науки

description: How the Firefox team changed how we thought about shipping features and replaced a process biased towards those who had the loudest voices and the luxury of time with a process that is more inclusive and allows us to reduce risk to Firefox users when we ship. In this talk you'll learn how the Firefox team changed how we ship new features in the browser, and adopted industry best practices including gradual deployments and feature flags.

uk: вхід без авторизації

name: How Firefox upholds its values and keeps up with change


Designing a DSL with Kotlin

uk: Комп'ютерні науки

description: Kotlin is one of those “new” JVM languages that are currently rocking the boat. Although it’s made a great impact on Android, it’s equally good on the server side. As Domain-Specific Languages are constrained by the language they run on, Kotlin frees developers from Java fluent builders to propose something better.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: Although Kotlin is, from a language perspective, 100% interoperable with Java, due to the slight paradigm shift (nullability) there might be some pain when using Java frameworks, e.g.: the need of private var lateinit when using JUnit, having to use compiler plugins to open up Spring annotated beans or a generated zero-arg constructor for Hibernate. This talk goes through a full fledged alternative to the common Java stack when writing microservices, using: Ktor (Web framework), Kodein (DI container), Exposed (SQL library), Spek (test framework), Gradle Kotlin DSL, ...

uk: вхід без авторизації

name: Idiomatic Kotlin Microservices: A live coding session on how to go pure Kotlin with microservices


uk: Комп'ютерні науки

description: When writing networking code, you want to make sure the code between the client and server implementation is consistent. After spending hours defining the APIs with your backend engineers, you’ll probably need to spend even more time implementing those details over to your code (and guess what… your backend engineers will be doing the same!). This process is boring, time consuming, and prone to errors.

uk: вхід без авторизації

name: From Swagger to Kotlin via Gradle: Generating your network code has never been so easy


Kotlin MP: Into the Multi-Verse

uk: Комп'ютерні науки

description: Kotlin Multiplatform is the new kid on the cross-platform block. The approach although is very different from what you have seen in the past. The new approach utilizes Kotlin Native to compile Kotlin language to native binaries for specific target platform which can run without a virtual machine. Thus enabling simplified code sharing across multiple platforms. In this talk, you will be introduced to Kotlin/Native and demonstrate how to build a Kotlin Multiplatform app that runs on both iOS and Android using shared Kotlin code.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: mesa3d.org is stuck on web 1.0 technology, but let's see what we can do about it. This is a Birds-Of-a-Feather session, which starts off with a short presentation as an introduction about the current state of affairs.

uk: вхід без авторизації

name: Modernizing mesa3d.org: Let's bring mesa3d.org past web 1.0


uk: Комп'ютерні науки

description: JPEG 2000 was developed to replace the very successful JPEG standard, but it has instead remained a niche code. With recent updates to the standard speeding up decode by 10X, is world domination around the corner ? This talk will describe many of the sophisticated features that JPEG 2000 offers, and discuss why a 20 year old standard may be the codec of the future.

uk: вхід без авторизації

name: The Rise and Fall and Rise of JPEG2000: Currently a niche codec, recent enhancements to the JPEG 2000 standard speed it up by 10x and will propel it into the mainstream.


uk: Комп'ютерні науки

description: Open source stacks such as GStreamer, ffmpeg and UPipe now implement a large number of different ways to stream audio & video over a network. Just to name a few, there are RTSP, SRT, RIST, WebRTC, HLS, DASH, AES67, SmoothStreaming, RTMP! Some are for local networks and some target the Internet, depending on the use-case, these protocols have different upsides and downsides. To create a successful project, one needs to select the best suited technology. I'll go over the various protocols and explain how they relate to each other and their individual advantages and inconveniences.

uk: вхід без авторизації

name: Which video network streaming protocol should I use?


uk: Комп'ютерні науки

description: rav1e is an opensource Av1 encoder. We'll see what makes it fairly unique beside the choice of using Rust as main development language. We'll see what we did in the past releases, what design choices we took and what we plan to do in the next two releases. By February we will have the release 0.2.0 and the release 0.3.0 out. I'll present what's coming in the release 0.4.0 and 0.5.0. This will include some performance evaluation and describing some of the features are currently unique in rav1e.

uk: вхід без авторизації

name: rav1e - 0.3.0 and after: What we did so far and what will do in the future


uk: Комп'ютерні науки

uk: вхід без авторизації

name: Quantum circuit optimisation, verification, and simulation with PyZX


uk: Комп'ютерні науки

description: This talk is a late addition that replaces "The Role of Open Source Frameworks in Quantum Computing and Technologies" by Jack Hidary.

uk: вхід без авторизації

name: Quantum Game with Photons: Tensors in TypeScript, Visualized


uk: Комп'ютерні науки

description: Simulation is a powerful tool to understand quantum phenomena. The simulation of quantum circuits is usually achieved by gate matrix product, such as in Qiskit and ProjectQ. Thanks to the Lindblad master equation solver, QuTiP is developing a simulator that simulates quantum circuits at the level of the real quantum evolution happening in your quantum device. This framework offers pulse-level control and a flexible way of noise simulation. Upon it, we are going to define different back-ends for different physics systems such as Cavity QED, Ion trap or Superconducting system. The simulator could help to improve your quantum device, study the effect of noise and create noise mitigation scheme.

uk: вхід без авторизації

name: Simulating noisy quantum devices with QuTiP


Incrementality and deck functions

uk: Комп'ютерні науки

description: Protocols in symmetric cryptography are often built from block ciphers, with a fixed input and output size, while variable sizes are handled through their modes of use. Incrementality, namely, the ability to efficiently compute the output for increasing inputs, or to request longer outputs, is often a property of the implementation rather than an explicit feature of a mode.

uk: вхід без авторизації


seccomp — Your Next Layer of Defense

uk: Комп'ютерні науки

description: Why should you allow all possible system calls from your application when you know that you only need some? If you have ever wondered the same then this is the right talk for you. We are covering: - What is seccomp in a nutshell and where could you use it. - Practical example with Elasticsearch and Beats. - How to collect seccomp violations with Auditd. Because your security approach can always use an additional layer of protection.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: Security vulnerabilities are still very common in todays software. Formal methods could improve the situation, but program verification remains a complex and time-consuming task. Often, the verification of existing software is infeasible and a complete rewrite can be prohibitively expensive. Both, however, is not necessarily required to improve on the current state. By replacing critical parts of an existing software by verified code, security can be strengthened significantly with moderate effort. We show the feasibility of this approach by the example of a FLOSS TLS implementation. The basis of our PoC is the TLS 1.3 library Fizz which is written in C++. The existing message parser was replaced by a verified version implemented in the SPARK language. Our RecordFlux toolset was used to automatically generate the parser based on a formal message specification. With the SPARK tools we can prove automatically that an attacker cannot cause any overflows, runtime errors or undefined state by sending malformed messages to the modified library. Because of mismatches in the data structures used in C++ and SPARK, some glue code had to be written manually to integrate the verified parser into Fizz. Still, the modified TLS implementation shows only a slight performance loss while providing higher security.

uk: вхід без авторизації

name: Securing Existing Software using Formally Verified Libraries


uk: Комп'ютерні науки

description: Spectre-type attacks are a real threat to secure systems because a successful attack can undermine even an application that would be traditionally considered safe. SpecFuzz is the first tool that enables fuzzing for such vulnerabilities.

uk: вхід без авторизації

name: SpecFuzz: Bringing Spectre-type vulnerabilities to the surface


uk: Комп'ютерні науки

description: Everybody knows sudo, right? Sudo allows a system administrator to give certain users the ability to run some commands as root, while logging the executed commands and their arguments. It is installed by default on almost all Linux systems, and is available for most commercial UNIX systems. Still, even system administrators often only know it is the “prefix” to use before entering a command requiring root privileges. Learn how much more this simple looking tool can do! Everybody knows sudo, right? Sudo allows a system administrator to give certain users the ability to run some commands as root, while logging the executed commands and their arguments. It is installed by default on almost all Linux systems, and is available for most commercial UNIX systems. Still, even system administrators often only know it is the “prefix” to use before entering a command requiring root privileges. Learn how much more this simple looking tool can do! Most of the times the default configuration allows a group of users to run any commands: %wheel ALL=(ALL) ALL It’s a good first step, better than using the root account directly. This way you can trace who ran what commands on the system. But there are a lot more possibilities when configuring sudo, making your system more secure. Life is simple when when you have to give access a single user to a single command. But as soon as you have multiple users with the same access rights, it is not just shorter but also easier to maintain, if you use aliases. For added security, you can add a hash of binaries to sudo. This way if the binary changes for any reasons, like modifying it through a successful exploit, you can prevent it from being used.

uk: вхід без авторизації

name: What you most likely did not know about sudo…


uk: Комп'ютерні науки

uk: вхід без авторизації

name: SimulaQron - a simulator for developing quantum internet software


uk: Комп'ютерні науки

description: Go 1.14 is planned to be released in February 2019 and this talk covers what's coming up with it. We'll talk about new features and fixes in Go, new proposals for Go 2. All of the new things you might have missed. This has been a staple talk of the Go devroom, opening the stage every year, and has always been a successful one.

uk: вхід без авторизації

name: The State of Go: What's new since Go 1.12


uk: Комп'ютерні науки

description: What benchmark? How many VMs? How big each VM is? Are they all equal or are they different? What's the host OS? What are the guest OSes? I.e., when wanting to do virtualization performance testing, the matrix of test cases tends to explode pretty quickly. This talk will show how we enhanced an existing benchmarking suite, MMTests, in order to be able to deal a little bit better with such complexity. And what our further activities and plans are, for even more and better automation. Functional testing is already hard enough, in virtualization. For instance, because we need to make sure that things work with different combinations of versions of the OSes in hosts and guests. Doing performance testing, even more so. In fact, there are much more things to consider, such as how many VMs we use, how big they are, whether or not they are equally big or different, what to run in them, how to partition the host resources for them... And this is true either in case you have a specific (virtualized) workload and some KPI to meet, in which case you need testing and benchmarking to figure out whether or not the tuning you have done has brought you there, or in case you wonder how good (or how bad) a certain configuration of both your host and your guests works, for a number of workloads, This talk will introduce the problem, showing how the size and the complexity of a typical 'virtualization performance testing matrix' really tend to explode. We will, as an example, show how some specific characteristics of a virtualized system were, despite tuning, causing us to not be able to achieve the desired performance levels. Then we illustrate how, at SUSE, we do automated performance benchmarking, how we enhanced the tool that was in use the most for baremetal benchmarks (the MMTests suite) in order for it to be much more useful in virtualized systems and how we are integrating it with other tools to bring the level of automation even further and achieve something that really resembles a Virtualization Performance CI system.

uk: вхід без авторизації

name: Automated Performance Testing for Virtualization with MMTests: The Tools, the Challenges and also some War-Stories about Performance Testing Hypervisors and VMs


uk: Комп'ютерні науки

description: - Introduction - Activity: what's "failure", anyway? - Impact of failure Resources spent before failure is made Resources spent to detect failure Resources spent after failure is detected - So what is "fail fast"? *The art and science of satisficing - Activity: how would you design to fail in these scenarios? - Documentation - the power of story-telling - Summary: the successful way to fail fast - Q/A

uk: вхід без авторизації

name: How to fail successfully and reliably: And look good while doing it


uk: Комп'ютерні науки

description: In this talk we will explore some of the FOSS specific mentalities and practices that may discourage adoption of comprehensive automated testing, and present advice for promoting and sustaining automated testing in FOSS projects. Automated testing is on the rise in the FOSS world, but there is still ample room for improvement when it comes to sufficiently comprehensive automated tests. The test suites of many FOSS projects leave a lot to be desired, a result that's often affected by useful FOSS practices that are taken too far. Identifying such practices, like placing excessive trust in code reviews because "given enough eyeballs, all bugs are shallow", or leaving tests for later in the spirit of "release often, release early", is a first step in having a discussion that will hopefully convince more projects to embrace automated testing, and improve the quality of FOSS overall.

uk: вхід без авторизації

name: Improving the culture of automated testing in FOSS


uk: Комп'ютерні науки

description: The MDN Web Developer Needs Assessment is the first edition of an annual study providing a prioritized list of designer and developer needs. As an industry working on the Web, as a platform and set of tools, we recognized a critical voice was missing when it came to making decisions about feature development — that of web designers and developers. The MDN Web Developer Needs Assessment is the first edition of an annual study providing a prioritized list of designer and developer needs. We put this report together with the help of more than 30 stakehold- ers from the MDN Product Advisory Board member organizations and the input of more than 28,000 developers and designers from 173 countries who took the twenty minutes necessary to complete the survey entirely. That’s more than 10,000 hours contributed by the community to help us understand their pain points, wants, and needs. With that involvement, we believe the MDN Web DNA is the largest web developer and designer focused research study ever conducted. Their input now, and in future versions, will influence how browser vendors prioritize feature development so we can address the needs of designers and developers, both on and off the Web. By producing the report annually, we can track needs and pain points over time so we can see the impact of our efforts. A critical aspect of the report is that it provides a voice for commu- nities of practitioners. We did not tailor it to current assessments and priorities of participating browser vendors. A single browser vendor does not own it.

uk: вхід без авторизації

name: What are the Top 10 Frustrations for Web Developers and Designers?: Lessons from the 2019 MDN Developer Needs Assessment


uk: Комп'ютерні науки

description: In 2019, Mozilla's Open Innovation and WebCompat team joined forces to improve the process of gathering web compatibility issues. One of the experiments was to introduce machine learning capabilities in the triaging process and automate some steps. This talk is about the early steps and how we got some hands on experience with machine learning, what we've achieved so far and potential next steps.

uk: вхід без авторизації

name: Web compatibility: Automatic report triaging using ML


uk: Комп'ютерні науки

description: A short update on the state of Zink, and OpenGL implementation on top of vulkan, now that it's upstream in Mesa.

uk: вхід без авторизації

name: Zink Update: OpenGL on Vulkan upstream in mesa


uk: Комп'ютерні науки

description: As decentralized social media gathers more users, the privacy by design and default principles from the GDPR are in accordance to the design model it proposes. This talk is going to tackle the main advantages and challenges this approach brings, from the perspective of the data protection legislation and privacy architectural strategies. Social media platforms have been a central feature in our generation and as we grow more toward understanding their power and taking part in their evolution, we realize the challenges they impose. One of those is how to protect personal data of users, and ensure that the processing is done in accordance with legislation such as GDPR. Decentralized social media has developed as a space where personal data ownership is a priority, coming as an alternative to centralized platforms. Not coincidentally, they are mostly open source software, as transparency and offering control of the data to the users go hand in hand with this ambition. Blockchain based social media networks, and projects built on top of the ActivityPub protocol are some of the most popular examples of alternatives which have gathered significant numbers of users or data subjects, under the GDPR. One of the main architectural strategies in building software which is privacy by default and design is data separation. It states that the processing of personal data should be performed whenever possible in a distributed manner. As the GDPR lists privacy by design and default as core principles, decentralized social networking poses a significant advantage compared to centralized solutions. One heuristic to take from this is if the future is privacy-oriented, then social media will be decentralized. This talk is going to offer an analysis of the main benefits and challenges that decentralized social medial pose, from the points of view of personal data protection legislation and privacy design patterns for software architecture.

uk: вхід без авторизації

name: Technology challenges for privacy: the case of decentralized social media


uk: Комп'ютерні науки

description: Go and public training models can provide great potential: A fast way to build "eyes around the world", also known as classifiers. And with great powers, come great opportunities, such as building fantastic applications to turn our world a better place to live through the technology with few steps. Go and public training models can provide great potential: A fast way to build "eyes around the world", also known as classifiers. And with great powers, come great opportunities, such as building fantastic applications to turn our world a better place to live through the technology. The GO language, have GoCV package, and it provides the most modern and advanced Computational Vision libraries that exist like OpenCV. In this talk, I'll demonstrate how to use public models from TensorFlow Hub and OpenCV library to easily build classifiers for APIs, taking a super leap from draft to a working classifier, in a few steps! The idea is to demystify the concepts behind classifiers and show how to build one in a few steps and make rankers accessible to the business, showing how GO does this in a unique, scalable and self-performing way, and of course, encouraging the community to contribute and sharing more training models to they can turn more and more accurate!

uk: вхід без авторизації

name: Classify things in Go: the easy way.: Building classifiers quickly with the community contributions.


uk: Комп'ютерні науки

description: Today, the task of running containers involves a lot of technologies and levels of abstraction, and it can be difficult to understand, or just to keep up. How do CRI-O and containerd overlap ? Does Kata containers compete with Firecracker ? Is there any relationship between OCI and CRI ? How many different meanings can "container runtime" have ? In this talk, we will navigate this treacherous sea of overlapping technologies and acronyms that take care of running container workloads, below Kubernetes all the way down to the Linux kernel. We will present at a high-level how these technologies, interfaces and levels of abstraction combine and overlap, and hopefully clarify which are spec vs. implementation, which are complementary, and which are alternative solutions. This talk will cover the following points: The world used to be simple: the case of Docker Interfaces: OCI and CRI More puzzle pieces: Podman, Containerd and CRI-O Workload isolation: Kata Containers, GVisor and Firecracker Q&A

uk: вхід без авторизації

name: Below Kubernetes: Demystifying container runtimes


uk: Комп'ютерні науки

description: LXD is a system container manager, its goal is to safely run full Linux systems at very high density and low overhead. Containers may be created from pre-made images, covering most Linux distributions, or by importing an existing virtual machine or physical system. Advanced resource control and device passthrough is available to expose as much or as little system resources to those containers. Snapshot and backup tooling is available to safeguard those containers and data. Storage pools and networks can be used to offer a variety of storage and network options to the containers. Management happens through a REST API with a default CLI client. LXD has built-in support for clustering which makes it trivial to scale a deployment to dozens of servers, all acting as one virtual LXD server. In this presentation, we'll go over LXD's main features through a demonstration including usage of LXD's clustering abilities, running a variety of Linux distributions and converting existing systems to containers.

uk: вхід без авторизації

name: System containers at scale: An introduction to LXD clustering


Supervising and emulating syscalls

uk: Комп'ютерні науки

description: Recently the kernel landed seccomp support for SECCOMPRETUSER_NOTIF which enables a process (supervisee) to retrieve a fd for its seccomp filter. This fd can then be handed to another (usually more privileged) process (supervisor). The supervisor will then be able to receive seccomp messages about the syscalls having been performed by the supervisee. We have integrated this feature into userspace and currently make heavy use of this to intercept mknod(), mount(), and other syscalls in user namespaces aka in containers. For example, if the mknod() syscall matches a device in a pre-determined whitelist the privileged supervisor will perform the mknod syscall in lieu of the unprivileged supervisee and report back to the supervisee on the success or failure of its attempt. If the syscall does not match a device in a whitelist we simply report an error. This talk is going to show how this works and what limitations we run into and what future improvements we plan on doing in the kernel.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: WebAssembly System Interface (WASI) is the new brilliant community effort at standardising the use of WebAssembly (Wasm) outside the browser environment. Initiated by Mozilla, now under the umbrella of Bytecode Alliance, WASI has the potential to revolutionise the way we think about the "build once, run anywhere" in a truly secure manner. But could WASI also lend itself to a task of running any code within a network of distributed, untrusted nodes such as BOINC or Golem Network, and ensuring that the results received are indeed correct? The short answer is yes, if determinism of computations could be enforced which opens many ways at verifying the results. Enforcing determinism is a rather difficult thing to achieve in other platforms such as JVM etc., now possible thanks to Wasm and WASI. This talk will delve deep into the inner workings of the WASI spec, and its goto implementation, the wasi-common library, and explore how and if determinism can be enforced at the WASI syscall level

uk: вхід без авторизації

name: Facilitating distributed deterministic computation with WASI


uk: Комп'ютерні науки

description: Although KMS/DRM can replace the Linux Framebuffer, there are a number of programs and libraries that can be built on top of the Linux Framebuffer (without X11 or Wayland dependencies) and that might still be worth considering. The Linux Framebuffer allows direct access to pixels: we will illustrate it with various rendering tools (Fbpad, Fbi, NetSurf, MPlayer, ...), but also with drawing libraries such as Cairo or Evas, and multimedia frameworks like FFmpeg or GStreamer. The Mesa 3D project makes OpenGL rendering possible using only the Linux Framebuffer with GLFBDev or EGL: mesa-demos and yagears programs will be shown. We will then cover graphics libraries (GLUT, SDL, EFL, GTK, Qt) that allow to integrate high level applications running directly on top of the Linux Framebuffer with no compositor. An example will be described using either WebKitGTK or QtWebKit for the rendering of a HTML5 media player and a WebGL sample, using the Linux Framebuffer port of those libraries and toolkits. This talk is inspired by the HiGFXback project which aims at preserving historical backends used for graphics on GNU/Linux systems.

uk: вхід без авторизації

name: Back to the Linux Framebuffer!: Linux Framebuffer support in free software


uk: Комп'ютерні науки

description: As the rich capabilities of platforms increase, so does their complexity. As hypervisors and operating systems harden their attack surfaces, malware has been moving deeper into the platform. For example, a modern laptop may have over 15 updatable firmware elements, each with low-level access to a specific hardware domain. From the early days of proprietary BIOS in the 1980’s and 1990’s, to the world of standards in the 2000’s, to the post-PC world of the last few years, the nature of firmware has changed. In order to provide security guarantees for platform firmware, the servicing model of the platform takes center stage. This session discusses the evolution of platform servicing using examples based on device firmware, non-host/system on a chip (SOC) firmware, and implementation of the Unified Extensible Firmware Interface (UEFI). A modern servicing model features elements for component-based update, resiliency in case unexpected conditions, a more seamless user experience, lowering the friction of update integration, and telemetry for a view into platform health and firmware inventory. This talk will discuss current trends in standards such as UEFI and associated EDK II firmware, and how the Linux Vendor Firmware System (LVFS) used these components as part of a holistic, open source approach to seamless firmware updates.

uk: вхід без авторизації

name: Capsule Update & LVFS: Improving system firmware updates: Improving reliability and security by simplifying distribution of firmware updates


Generating a Code Generator

uk: Комп'ютерні науки

description: Automatic, pattern-based code generation for Mesa's compiler infrastructure has been a long standing dream. Nearly a decade ago experiments were conducted using systems like BURS and lburg. Each of these attempts encountered various insurmountable road blocks. In the intervening years, both software and GPU architectures have changed significantly. These changes have enabled a code-generator generator to be a reality. The design and implementation of one system will be presented. In addition to the successes, various difficulties and rough edges will be detailed.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: We talked extensively about LinuxBoot, a Linux-based environment intended to be integrated into the firmware on the boot ROM. This time we want to talk about how do we test LinuxBoot before it goes to production. We will talk about ConTest, an open-source continuous and on-demand system testing framework that we designed to be modular, validating, and infrastructure-agnostic, and how it is helping us validate open source firmware on our datacenter platforms. With LinuxBoot we became vendors of our own system firmware. In order to go to production we need a reliable quality assurance process, and firmware testing was a necessity. In this talk we are presenting ConTest (short for Continuous Testing), a modular framework aimed at automating system testing workflows, like firmware validation and provisioning. ConTest has several goals in mind: being open source and community-driven; validate as much as possible at compile time and at job submission time, to minimize unnecessary operations and run-time failures; being lightweight and infrastructure-agnostic, so it can run in Facebook’s datacenters as well as on a Raspberry Pi; being composable, thanks to an interface-and-plugins architecture; being user-oriented so that it’s not necessary to know the internals to use it effectively; and being metrics and events driven, so that users can gain valuable insights about their jobs, more than just success rate (e.g. micro-benchmarking and trend analysis). ConTest is aimed at anyone who need to automate system-level testing. Various plugins are provided out of the box, with examples on how to use them. The users can combine them like building blocks using a simple job description format based on JSON, and test scenarios of variable complexity. When default plugins are not enough, for example in order to talk to a custom service, users can develop new plugins, and plug them just like if they were part of the core framework. Open-sourcing your own plugins is always appreciated!

uk: вхід без авторизації

name: Open Source Firmware Testing at Facebook: If you don't test your firmware, your firmware fails you


uk: Комп'ютерні науки

description: Systemd is a de-facto standard process manager in all mainstream Linux distributions for almost a decade. D-Bus is most widely used inter-process communication on a local host. It's used in many core apps on Linux Desktop. Yet both systemd and D-Bus are undervalued. Very often, programs that are only intended to run on Linux attempt to re-implement (with bugs) what systemd and D-Bus already provide (for example: watchdog function, reliable process termination, notifying another program about some event, coordination between multiple processes). The goal of this talk is to shift perspective on systemd and D-Bus (using concrete practical examples in Go), and show how basic building block these systems provide can be re-used in software you write for modern Linux system. This is an exploratory talk. Then intent is to look at systemd and D-Bus from a different angle. Most of current tutorials about systemd focused on operating a service like apache, nginx or redis. D-Bus tutorials are very abstract, basic and lack any concrete useful use-cases. I plan to present few recent additions to systemd, such as portable services and resource control. As well as re-introduce few existing concepts, like sd-notify, watchdogs and transient units. On D-Bus I plan to show how to use bus abstraction and few neat features, like passing file descriptors and receiving notifications. The focus is on how to not re-invent things that systemd and D-Bus do much better. Examples are given as a few simple Golang programs, with full source available on github. The indented audience is anyone who write and operate Go code on Linux. Preferred experience of the audience: basic knowledge of Linux and Golang, familiarity with systemd and D-Bus concepts would be useful as well.

uk: вхід без авторизації

name: Uplift your Linux systems programming skills with systemd and D-Bus: Practical examples and best practices on how to leverage systemd and D-Bus in Go


uk: Комп'ютерні науки

description: This talk will give an update on the progress being done in libratbag as well as present the new projects we have planned. If there's time I will also show how you should be able to write your own driver and debug existing drivers. This is a talk about libratbag updates, planned projects and a code demo.

uk: вхід без авторизації

name: libratbag: A way to configure your input devices


uk: Комп'ютерні науки

description: Mgmt is a real-time automation tool that is fast and safe. One goal of the tool is to allow users to model and manage infrastructure that was previously very difficult or impossible to do so previously. The tool has two main parts: the engine, and the language. This presentation will have a large number of demos of the language. To showcase this future, we'll show some exciting real-time demos that include scheduling, distributed state machines, and reversible resources. As we get closer to a 0.1 release that we'll recommend as "production ready", we'll look at the last remaining features that we're aiming to land by then. Finally we'll talk about some of the future designs we're planning and discuss our free mentoring program that helps interested hackers get involved and improve their coding, sysadmin, and devops abilities.

uk: вхід без авторизації

name: Next generation configuration mgmt: Autonomous Databases


uk: Комп'ютерні науки

description: Matrix is an open source project developing an open protocol and network for decentralised end-to-end-encrypted communication, providing a viable open alternative to the proprietary communication silos of WhatsApp, Slack, Discord and friends. One of Matrix's main goals is to provide a highest-common-denominator open network which can bridge together existing communication silos. In this talk, we'll show off Bifröst, our new application framework for building bridges, and demonstrate high quality bridging with XMPP, Slack, Discord, WhatsApp, and more! Matrix owes its name to the idea of binding together existing communication platforms into an open 'matrix' in which they can interoperate. Over the last year the wider Matrix ecosystem has been focusing increasingly on bridging, with lots of exciting development happening around: Bifröst - a TypeScript application framework for building bridges, including high quality XMPP support via xmpp.js and freeform protocol support via libpurple Slack - matrix-appservice-bridge, including bridging edits, reactions, threads, and full DM support via "puppetting" WhatsApp - mautrix-whatsapp, a fully functional WhatsApp bridge (using the API from WhatsApp Web) Discord - matrix-appservice-discord, with experimental puppetting support for full IRC - matrix-appservice-irc We'll explain all the flavours of bridging available these days (from bot-based, virtual users, puppetted, gatewaying etc) and show off Bifröst providing full gatewayed bridging between Matrix & XMPP (so that anyone in Matrix can reach anywhere in XMPP and vice versa), as well as double-bridging (e.g. IRC<->Slack via Matrix) - and generally illustrate how Matrix can be used to heal fragmented communities which have ended up shattered between Slack, Discord, IRC and other platforms.

uk: вхід без авторизації

name: Crossing the Bifröst - Bridging All The Things with Matrix: In which we bridge together as many comms systems as possible via Matrix


uk: Комп'ютерні науки

description: In this talk will cover Monado and Khronos' OpenXR standard, and give an overview about the current state of open source VR and what lies ahead. Also go into some details of how tracking is done inside of Monado and show of the current state. VR took off for the consumer with the release of Oculus consumer hardware. But the hardware lacked open source drivers and Linux support in general. The consumer VR space has now grown from a kickstarter campaign into a large industry. But this growth has its down sides, multiple companies have their own APIs competing. Luckily these companies have agreed to work on a single API under the Khronos umbrella. Now that OpenXR has been released and and the Monado project has been getting more stable it is now possible to do good VR on a completely open stack.

uk: вхід без авторизації

name: FOSS Virtual & Augmented Reality: The Monado project & OpenXR


uk: Комп'ютерні науки

description: Often when asyncio is discussed, people think of it as a high performance concurrency programming paradigm for Python. In this talk however, we approach asyncio from a different angle, one that will possibly help some of you to finally get what asyncio is about. it's not only about performance, but at least as much about correctness and readability of concurrent applications. Concurrency is hard to get right. Often when asyncio is discussed, people think of it as a high performance concurrency programming paradigm for Python. In this talk however, we approach asyncio from a different angle, one that will possibly help some of you to finally get what asyncio is about. it's not only about performance, but at least as much about correctness and readability of concurrent applications. It is known that for multithreaded applications, synchronization is hard to get right. Doing it wrong can either lead to deadlocks or broken data structures. We will have a look at how using asyncio is different from using threads, when it's better and what pitfalls we have. This talk should be a good introduction for anyone just starting with asyncio, but can also clarify things for people that are using asyncio already. I expect people to have at least used some form of concurrency, either threads or an event loop like we have in JavaScript.

uk: вхід без авторизації

name: Asyncio: understanding async and await in Python


Follow Your Celery Tasks with Director

uk: Комп'ютерні науки

description: All Python developer who want to run asynchronous tasks should know Celery. If you have already used it, you know how great it is ! But you also discovered how it can be complicated to follow the state of a complex workflow. Celery Director is a tool we created at OVH to fix this problem : using some concepts of Event Sourcing, Celery Director helps us to follow the whole lifecycle of our workflows. It allows us to check when a problem occurred and relaunch the whole DAG (or just a subpart if tasks are not completely idempotent). During this talk we will introduce you the different concepts of Celery Director then we'll make a demonstration of it. All Python developer who want to run asynchronous tasks should know Celery. If you have already used it, you know how great it is ! But you also discovered how it can be complicated to follow the state of a complex workflow. Celery Director is a tool we created at OVH to fix this problem : using some concepts of Event Sourcing, Celery Director helps us to follow the whole lifecycle of our workflows. It allows us to check when a problem occurred and relaunch the whole DAG (or just a subpart if tasks are not completely idempotent). During this talk we will introduce you the different concepts of Celery Director then we'll make a demonstration of it.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: SortingHat is an open source Python tool that helps to manage the different contributor identities within an open source project. Under the hood SortingHat relies on a relational database, which can be queried via SQL, command line or directly via its Python interface. However, these ways of interacting with SortingHat hinder its integration with external tools, web interfaces and new web technologies (e.g., Django, REST services). To overcome these obstacles, we have evolved SortingHat's architecture using a GraphQL model based on the Graphene-Django implementation. This talk describes our experience in migrating to GraphQL, from adapting the SortingHat functionalities to refactoring the unit tests. Furthermore, we comment also on lesson learned, advantages and drawbacks of using this new approach SortingHat is one of the core tools of GrimoireLab, an open-source software analytics platform part of CHAOSS project (Community Health Analytics Open Source Software) under the umbrella of the Linux Foundation.

uk: вхід без авторизації

name: When Python meets GraphQL: Managing contributors identities in your open source project


RISC-V Boot flow: What's next ?

uk: Комп'ютерні науки

description: RISC-V boot flow has come a long way since in recent times by leveraging the various opensource boot loaders/firmware projects. This also helped in achieving a well-supported and standard boot flow for RISC-V. As a result, developers can use the same boot loaders to boot Linux on RISC-V as they do in other architectures. Currently, U-Boot is used as the last stage boot loader and OpenSBI as the machine mode run time service provider, but there's more work to be done. A few of such future works includes U-boot SPL support, UEFI boot in RISC-V Linux and booting protocol improvements. This talk will focus on some of these ongoing works which are necessary to declare that RISC-V is truly ready for world domination.

uk: вхід без авторизації


uk: Комп'ютерні науки

uk: вхід без авторизації

name: Quantum computer brands: connecting apples and oranges


uk: Комп'ютерні науки

description: RISC-V processors have gained acceptance across a wide range of computing domains, from IoT to embedded/mobile class and even in server-class processing systems. In processing systems ranging from connected cars and autonomous vehicles, to those on-board satellites and spacecrafts, these processors are targeted to function in safety-critical systems, where Reliability, Availability and Serviceability (RAS)-based considerations are of paramount importance. Along with potential system vulnerabilities caused primarily due to random errors, these processors may also be sensitive to targeted errors, possibly from malicious entities, which raises serious concerns regarding the security and safety of the processing system. Consequently, such systems necessitate the incorporation of RAS-based considerations right from an early stage of processor design. While the hardware and software ecosystem around RISC-V has been steadily maturing, there have, however, been limited developments in early stage reliability-aware design and verification. The Early-stage Reliability And Security Estimation for RISC-V (ERASER) tool attempts to address this shortcoming. It consists of an open source framework aimed at providing directions to incorporate such reliability and security features at an early, pre-silicon stage of design. These features may include what kind of protection to be applied and which components within the processor should they be applied to. The proposed infrastructure comprises of an open source toolchain for early stage modeling of latch vulnerability in a RISC-V core (SERMiner [1]), a tool for automated generation of stress marks that maximize the likelihood of a transient-failure induced error (Microprobe (RISC-V) [2]), and verification by means of statistical and/or targeted fault injection (Chiffre [3]). While the infrastructure is targeted towards any core that uses the RISC-V ISA, the repository provides an end-to-end flow for the Rocket core [4]. ERASER thus evaluates “RAS-readiness”, or the effectiveness of protection techniques in processor design such that processor vulnerability in terms of Failures-In-time (FIT) rate is minimized, for a specified power/performance overhead. FIT rate is defined as the number of failures in one billion hours of operation and is a standard vulnerability metric used in industry. ERASER is an open source tool available for download at https://github.com/IBM/eraser. The tool currently supports analysis of all latches in the design across a single Rocket core and the generation of stressmarks that can be used to evaluate the vulnerability of these latches. In addition to radiation-induced soft errors, we plan to extend ERASER to also model errors due to voltage noise, thermal and aging-induced failures, both in memory and logic, and generate representative stressmarks. ERASER is an initial effort to devise a comprehensive methodology for RAS analysis, particularly for open-source hardware, with the hope that it spurs further research and development into reliability-aware design both in industry and academia. References: K. Swaminathan, R. Bertran, H. Jacobson, P. Kudva, P. Bose, ‘Generation of Stressmarks for Early-stage Soft-error Modeling’, International Conference on Dependable Systems and Networks (DSN) 2019 S. Eldridge R. Bertran, A. Buyuktosunoglu, P. Bose, ‘MicroProbe: An Open Source Microbenchmark Generator, ported to the RISC-V ISA, the 7th RISC-V workshop, 2017 S. Eldridge, A. Buyuktosunoglu and P. Bose, ‘Chiffre A Configurable Hardware Fault Injection Framework for RISC-V Systems’ 2nd Workshop on Computer Architecture Research with RISC-V (CARRV), 2018 Krste Asanović, Rimas Avižienis, Jonathan Bachrach, Scott Beamer, David Biancolin, Christopher Celio, Henry Cook, Palmer Dabbelt, John Hauser, Adam Izraelevitz, Sagar Karandikar, Benjamin Keller, Donggyu Kim, John Koenig, Yunsup Lee, Eric Love, Martin Maas, Albert Magyar, Howard Mao, Miquel Moreto, Albert Ou, David Patterson, Brian Richards, Colin Schmidt, Stephen Twigg, Huy Vo, and Andrew Waterman, The Rocket Chip Generator, Technical Report UCB/EECS-2016-17, EECS Department, University of California, Berkeley, April 2016 The attached figure shows a representative flow for the RAS estimation methodology. An initial characterization of all instructions in the RISC-V ISA is carried out via RTL simulation using an existing core model (eg. the Rocket core). The simulation is configured to generate VCD (Value- Change Dump) files for every single instruction testcase. The SERMiner tool parses these VCD files to determine latch activities across the core, aggregated at a macro (or RTL module) level. Based on these per-instruction latch activities, SERMiner outputs an instruction sequence, which forms the basis of the SER stressmark to be generated by Microprobe (RISC-V). Microprobe (RISC-V) is a microbenchmark generation tool that is capable of generating microbenchmarks geared towards specific architecture and micro-architecture level characterization. One of its key applications is in the generation of stressmarks, or viruses, that target various worst-case corners of processor operation. These stressmarks may be targeted at maximizing power, voltage noise, temperature, or soft-error vulnerability as in case of this tool. The generated stressmark is then used to generate a list of latches that show a high residency and hence a high SER vulnerability. These latches are the focus of fault injection-based validation experiments using the Chiffre tool. Chiffre provides a framework for automatically instrumenting a hardware design with run-time configurable fault injectors. The vulnerable latches obtained from running the generated stressmarks through the Rocket core model, and then through SERMiner, are earmarked for targeted fault injection experiments using Chiffre. The objective of these experiments is to further prune the list of vulnerable latches by eliminating those that are derated, that is, they do not affect the overall output even when a fault is injected in them. Focusing any and all protection strategies on this final list of latches would maximize RAS coverage across the entire core. Ongoing and future work: ERASER currently only supports analysis of all latches in the design across a single Rocket core and the generated stressmarks can be used to evaluate the vulnerability of these latches. Most on-chip memory structures such as register files and caches, are equipped with parity/ECC protection and are as such protected against most radiation-induced soft errors. However, they are still vulnerable to supply voltage noise, thermal and aging-induced failures, and other hard or permanent errors. We plan to extend ERASER to model such errors, both in memory and logic, and generate stressmarks representative of worst-case thermal emergencies and voltage noise, in addition to soft errors.

uk: вхід без авторизації

name: ERASER: Early-stage Reliability And Security Estimation for RISC-V: An open source framework for resilience/security evaluation and validation in RISC-V processors


uk: Комп'ютерні науки

description: This talk analyzes the vulnerability space arising in Trusted Execution Environments (TEEs) when interfacing a trusted enclave application with untrusted, potentially malicious code. Considerable research and industry effort has gone into developing TEE runtime libraries with the purpose of transparently shielding enclave application code from an adversarial environment. However, our analysis reveals that shielding requirements are generally not well-understood in real-world TEE runtime implementations. We expose several sanitization vulnerabilities at the level of the Application Binary Interface (ABI) and the Application Programming Interface (API) that can lead to exploitable memory safety and side-channel vulnerabilities in the compiled enclave. Mitigation of these vulnerabilities is not as simple as ensuring that pointers are outside enclave memory. In fact, we demonstrate that state-of-the-art mitigation techniques such as Intel’s edger8r, Microsoft’s “deep copy marshalling”, or even memory-safe languages like Rust fail to fully eliminate this attack surface. Our analysis reveals 35 enclave interface sanitization vulnerabilities in 8 major open-source shielding frameworks for Intel SGX, RISC-V, and Sancus TEEs. We practically exploit these vulnerabilities in several attack scenarios to leak secret keys from the enclave or enable remote code reuse. We have responsibly disclosed our findings, leading to 5 designated CVE records and numerous security patches in the vulnerable open-source projects, including the Intel SGX-SDK, Microsoft Open Enclave, Google Asylo, and the Rust compiler.

uk: вхід без авторизації

name: A Tale of Two Worlds: Assessing the Vulnerability of Enclave Shielding Runtimes


uk: Комп'ютерні науки

description: For the Raspberry PI 4 I started implementing a Vulkan driver. This talk will give a guide of how to approach such a task, what my expectations are and what I learned so far. With the release of Raspberry PI 4 it becomes theoretically more viable to use it in GPU heavy scenarios. Even ordinary software like Gnome Shell, Chromium and games fall into that category. Sadly, neither Broadcom nor Raspberry PI Foundation currently provide a Vulkan driver. Since I want as much performance (and little overheating) as possible, I started writing a Vulkan driver. This entails learning kernel and mesa internals as well as trying to understand Gallium. All that I have learned so far, I will try to share in this talk.

uk: вхід без авторизації

name: A Vulkan driver for the RPI4: A lesson in futility


uk: Комп'ютерні науки

description: For embedded developers using alternative programming languages, but also for anyone using third party driver frameworks such as libopencm3, one of the main pain points to start using a microcontroller is to make a Board Support Package. Things like linker script or startup code (crt0) not only require skills, but also information that are not always easily accessible. In this talk we will present a tool that generates linker script, startup code, and low level hardware binding for 3000+ ARM microcontrollers using information extracted from archives provided as part of the ARM Cortex Microcontroller Software Interface Standard (CMSIS).

uk: вхід без авторизації

name: BSP generator for 3000+ ARM microcontrollers


uk: Комп'ютерні науки

description: HIPPEROS is an upcoming open source RTOS that was developed at ULB and by a former spin-off company of ULB. The talk will be a presentation followed by an open discussion about the main architecture principles of the HIPPEROS kernel and OS, what platforms and architectures we support and our agenda regarding open source. This multitasking RTOS is specifically designed to take advantage of multi-core platforms for critical, hard real-time applications that must be predictable. It targets high-end embedded platforms that exhibit heterogeneous parallelism. The HIPPEROS kernel is designed from scratch in order to support recent process models present in the real-time systems research literature. The RTOS is based on a micro-kernel with an asymmetric master/slave architecture. It allows to natively support parallel processor architectures, by dedicating one core to the heavy operations of the kernel (scheduling, memory management, etc.) and the other cores can then execute user mode application and serve real-time tasks with very few interferences. The OS kernel was designed and implemented by a team made of people from the ULB PARTS laboratory (http://parts.ulb.ac.be/). The goal was to create a spin-off company around the topic of Real-Time Operating Systems, including the creation of a new micro-kernel for high-end embedded systems with an innovative software architecture, backed-up by research (both theoretical and applied), designed, developed and maintained with "good" (and agile) software design methodology. Within this business, a side objective was to maintain strong links with universities and the research world, by validating the OS design in an academic environment and continuous research activities. Currently, the company is under liquidation. The state of the project is frozen but we started an ongoing initiative aiming to open source the code base. This would allow external contributions and therefore continuing maintenance and development of new features. HIPPEROS could then become a test ground for academics and industrials that aim to try new ideas regarding the reliability and efficiency of their systems. With no such undertaking, the code base might just disappear, therefore cancelling out the 7-year team effort.

uk: вхід без авторизації

name: The HIPPEROS RTOS: A Song of Research and Development


Hacking Terraform for fun and profit

uk: Комп'ютерні науки

description: Using Terraform is often simple, extending it to do what YOU want, can be challenging (or “impossible”). Want to manage unsupported resources? Maintain lots of resources? Integrate non-integrable? The talk is an advanced guide about HOW to extend, integrate and execute Terraform to get things DONE. If you’ve been using Terraform just by following the official documentation, you are not getting all from it. As soon as one cloud provider announces a new service or a feature, you dream that Terraform has zero-day support for it. Well, it is not always like this, and I will show what we can do about it. Are you using Terraform and keep asking yourself why I should copy-paste so much? What if you need to manage more than a dozen resources with Terraform (e.g., hundreds of GitHub repositories with permissions, or hundreds of IAM users and their permissions)? How can I use Terraform to manage absolutely ANY type of resource? What is beyond Terraform modules? What is a really dynamic module and what Terraform 0.12 will help us with? Let's see the advanced and very unusual solutions of how Terraform can be extended, integrated, executed, or merely hacked to get the job done with the help of external open-source services and integrations.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: Current microkernels have shown to provide advantages in terms of security, robustness, and flexibility of systems. However, in recent years, the hardware added new challenges that need to be addressed as well, demanding approaches that include the hardware into the picture. First, hardware is getting more and more heterogeneous and consists not only of general-purpose cores, but contains also various accelerators. Second, system designers need to integrate untrusted third-party components (e.g., accelerators or modems) to meet today's performance, energy, and development-time demands. And third, security vulnerabilities such as Meltdown, Spectre, and Fallout have shown that today's complex general-purpose cores should not be trusted anymore to properly enforce isolation boundaries between different software components. In my talk, I will present a new system architecture that takes existing microkernel ideas to the "next level" to address the mentioned challenges. We use a hardware/operating system co-design consisting of a small and simple hardware component, called trusted communication unit (TCU), that we add next to each processing element (core, accelerator, modem, etc.) and an operating system, called M³, that takes advantage of it. The TCU provides a uniform interface for all processing elements, simplifying the management and usage of heterogeneous processing elements, and enables secure communication between arbitrary processing elements. M³ is designed as a microkernel-based system and runs its components on different processing elements with TCU-based communication channels between them. To account for the security vulnerabilities in today's cores, M³ places components onto different and physically isolated processing elements by default, but allows sharing of processing elements as a fallback.

uk: вхід без авторизації

name: M³: Taking Microkernels to the Next Level


uk: Комп'ютерні науки

description: Sculpt OS is a novel general-purpose operating system designed from the ground up and implemented using the building blocks of the Genode OS framework. It started with the vision of a truly trustworthy OS that combines a completely new system structure with microkernels, capability-based security, sandboxed device drivers, and virtual machines. The talk is a live demonstration of the current incarnation of Sculpt. The Genode OS framework is an operating-system technology created from scratch. Over the past decade, it steadily evolved from a fairly obscure research prototype to a practical day-to-day operating system. Being a component-based system designed after the principle of least privilege from the very beginning, it breaks with many concepts that we take for granted in traditional operating systems, e.g., the central role of files. Instead, Genode introduces a novel way of composing system scenarios out of building blocks where the building blocks are able to cooperate without ultimately trusting each other. Those building blocks include not only applications but also all classical OS functionalities including kernels, device drivers, file systems, and protocol stacks. In 2018 - after more than 10 years of developing Genode in a shadowy corner of the open-source community - the project created Sculpt OS, which is a Genode-based general-purpose OS for commodity PC hardware. Since it is not derived from any existing OS, Sculpt re-approaches established concepts like the installation, configuration, and spawning of programs from a new angle. This is reflected by its custom user interface. Besides presenting the motivation and the fundamental ideas behind Genode, the talk will introduce and demonstrate the current state of Sculpt OS, draw connections to related open-source projects, and give a glimpse on the project's future plans.

uk: вхід без авторизації

name: Demonstration of the Sculpt Operating System


seL4 Microkernel Status Update

uk: Комп'ютерні науки

description: I will give an overview of where seL4 stands today in terms of functionality, verification, ecosystem, deployment and community. The focus will be on what has happened in seL4 land over the past 12 months, which is a lot: seL4 Foundation, RISC-V support and introducing time protection. The biggest news of the year is that we are in the process of setting up the seL4 Foundation, as an open, transparent and neutral organisation tasked with growing the seL4 ecosystem. It will bring together developers of the seL4 kernel, developers of seL4-based components and frameworks, and those deploying seL4-based systems. Its focus will be on coordinating, directing and standardising development of the seL4 ecosystem in order to reduce barriers to adoption, raising funds for accelerating development, and ensuring clarity of verification claims. I will report on the state of this. The other big development is that we are closing in on completing verified seL4 on the open RISC-V architecture. This includes the functional correctness proof (that guarantees that the kernel is free of implementation bugs), the binary correctness proof (which guarantees that the compiler did not introduce bugs) and the tranition to the new mixed-criticality scheduling model, which supports the safe co-location of critical real-time software with untrusted components, even if the latter can preempt the former. Finally, on the research side we have introduced the new concept of time protection (the temporal equivalent of the established memory protection) that allows us to systematically prevent information leakage through timing channels.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: A bespoke OSHW HDMI video capture solution is being developed for use at FOSDEM and other open source conferences. This talk will explain the what, why, how and hopefully when. FOSDEM is unique in that it has 750+ talks on two days, with more than 28 parallel tracks. All are captured and streamed out live, and a sanitised version of each talk is re-encoded for separate viewing after the event. For each track, there are (at least) two capture boxes, one for the speakers' laptop (which also feeds the projector), and at least one for a camera. This means FOSDEM has close to 60 video capture boxes deployed. The FOSDEM video boxes are also used at several other conferences, and we are in active contact with several more, as each conference basically has the same problem to solve, albeit at a smaller scale than FOSDEM. Today, our capture boxes are an amalgamation of many different devices tied together, and while the whole is working surprisingly well, it is far from ideal. Some bits are non-free, some bits are hard or even impossible to control, and the result is bulky and, relatively speaking, expensive. Sourcing the exact same components again to expand the current array of boxes is nigh impossible, and the bulk of these boxes means that deployment is more of a hassle than it could be. To solve almost all of our issues, we are creating a bespoke HDMI capture solution by tying a HDMI-to-parallel-RGB decoder chip to the camera input of the venerable Allwinner A20 SoC. The Allwinner A20 was chosen due to its feature set, large community (linux-sunxi), its advanced upstream support and the availability of OSHW board designs. We were lucky to find a suitable board in the Olimex Lime2 (which is OSHW), which exposes all the necessary IO pins on pinheaders. Capturing 1280x720@50Hz, encoding it to h.264 for local storage and streaming over the network, while displaying the captured frames directly to HDMI or VGA (projector) and a status LCD, while also capturing (and passing through) audio is a challenge on this cheap, low power but open hardware. It forces us to make use of a wide array of SoC HW blocks, not all of which previously had driver support, and we are close to saturate the available memory and bus bandwidth. So while a good part of this talk is about describing the bigger problem we are trying to solve, this project very much is an issue of hardware enablement.

uk: вхід без авторизації

name: FOSDEM Video Box: A bespoke HDMI capture device for conferences.


uk: Комп'ютерні науки

description: New tools are coming out to make it possible to add breakpoints and debug running code in a Kubernetes Pod. This talk will present an overview of some of these tools. We'll cover tools that make it easy to update the code that's running in a Pod (Squash/Ksync/Telepresence). And we'll also cover how to connect your IDE to the code and set breakpoints. A really brief, high level overview of k8s pods & how to run an application there List out some the tools available that make debugging possible Overview of how each tool differs A demo of 2 different debugging tools

uk: вхід без авторизації

name: Debugging apps running in Kubernetes: An overview of the tooling available


uk: Комп'ютерні науки

description: The love for technology is what binds us and pushes us to keep improving. Though there are a lot of thriving RTC projects, collaboration between them is rare. This results in duplication of efforts, differing standards and lack of interoperability. In this session we will discuss the opportunities that lie in wait for the Free RTC space and how we're trying to tackle some of these issues through the Open VoIP Alliance. NOTE: This is a late addition to the schedule to fill a gap left by a speaker who cancelled.

uk: вхід без авторизації

name: RTC: A sea of opportunities: Advancing our field together through closer collaboration


HawkTracer profiler

uk: Комп'ютерні науки

description: HawkTracer is low-overhead instrumentation-based profiler built at Amazon Video for platforms with limited capabilities. It's written in C but can be used almost with any other language (we've successfully used it with JavaScript, LUA, Python and Rust). It's highly extensible (at compile time) and portable so it can be run on almost any embedded device. In this talk I'll introduce the architecture of the profiler, present it's advantages and limitations, show how can you instrument the code and demonstrate the profiler in action by running it with an example cross-language (Rust, C++ and Python) project.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: The "official" mini-debuginfo man-page describes the topic best: Some systems ship pre-built executables and libraries that have a special .gnu_debugdata section. This feature is called MiniDebugInfo. This section holds an LZMA-compressed object and is used to supply extra symbols for backtraces. The intent of this section is to provide extra minimal debugging information for use in simple backtraces. It is not intended to be a replacement for full separate debugging information (see Separate Debug Files). In this talk I'll explain what it took to interpret support for mini-debuginfo in LLDB, how we've tested it, and what to think about when implementing this support (e.g. merging .symtab and .gnu_debugdata sections).

uk: вхід без авторизації

name: Support for mini-debuginfo in LLDB: How to read the .gnu_debugdata section.


Postmodern strace

uk: Комп'ютерні науки

description: strace is a diagnostic, debugging and instructional utility for Linux. It is used to monitor and tamper with interactions between processes and the Linux kernel, which include system calls, signal deliveries, and changes of process state. In this talk the maintainer of strace will describe new features implemented since FOSDEM 2018. Several interesting features were implemented within strace project since FOSDEM 2018, including: seccomp-assisted system call filtering system call return status filtering PTRACE_GET_SYSCALL_INFO API support new options: -DD, -DDD, -X, -z, -Z In this talk the maintainer of strace will describe these new features and demonstrate what kinds of problems they help to solve.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: strace is known to add significant overhead to any application it traces. Even when users are interested in a handful of syscalls, strace will by default intercept all syscalls made by the observed processes, involving several context switches per syscall. Since strace v5.3, the --seccomp-bpf option allows reducing this overhead, by stopping observed processes only at syscalls of interest. This option relies on seccomp-bpf and inherits a few of its limitations. In this talk, we will describe the default behavior of ptrace and strace, to understand the problem --seccomp-bpf addresses. We will then detail the inner workings of the new option, as seen from ptrace (seccomp-stops) and bpf (syscall matching algorithms). Finally, we'll discuss limitations of the new option and avenues for improvement. Problem addressed and ptrace default behavior seccomp-bpf, SECCOMP_RET_TRACE, and the new behavior cBPF syscall matching algorithms Main limitations: working together with -p and -f Avenues for improvements

uk: вхід без авторизації

name: strace --seccomp-bpf: a look under the hood


strace: fight for performance

uk: Комп'ютерні науки

description: The talk gives an overview of various optimisations implemented in strace over the past several years. While most of them are quite trivial (like caching of frequently-used data or avoiding syscalls whenever possible), some of them are a bit more tricky (like usage of seccomp BPF programs for avoiding excessive ptrace stops) and/or target more specific use cases (like the infamous thread queueing patch[1], which was carried as a RHEL downstream patch for almost 10 years).

uk: вхід без авторизації


uk: Комп'ютерні науки

description: The story of how Mozilla Italia added the Italian language to Common Voice and after an year generated the language model. With the help of a lot of people in the various related project, developing tools and scripts, find and gather the sentences, do promotion and finally generate the model for Italian. A common issue in Common Voice is how to join and involve a community instead of doing all the tasks alone. Discourse is full of the same questions but there is no story or tutorial that show how this can be a way to work together for the same result, to benefit all the country/region. Mozilla is an inclusive community but the user case or the story behind from a specific community often is hidden and this is a problem, because Mozilla is open to everyone but the bureaucracy or the missing experience can be a blocker. Please note that this replaces the talk '(re)Activating the Common Voice project at a local level' by Redon Skikuli.

uk: вхід без авторизації

name: Generate a DeepSpeech model with the help of your community: How to get fun with teamwork


uk: Комп'ютерні науки

description: The web is pretty much present in everyone's life nowdays. But is it really for all? How are we making it a smooth usage for those with disabilities, for those with reduce time and internet connection? Or even more further, for those that just use the web for the first time? Let's learn a bit how the devtools from Firefox can help us improve everyone's experience without much of a sacrifice on our end. A11y and inclusion is getting more traction nowadays but people still think that they address only those with disabilities. As a person without any officially i did find myself in this situation and felt confused about how the web should be ( was about to loose money on ticket conferences because i was not seeing the categories). Some Developers are a bit defensive saying they don't have users for whom to build more a11y in or the time to add these features. Showing the devtools Firefox has for it - will show how fast you can check your page and how no costy is. Also not knowing all best practices won't be a blocker and firefox will give you suggestions. In a way i wanted to bring attention to A11y nd Inclusion in a more technical way.

uk: вхід без авторизації

name: A11y: It is not a bug, definitely a feature


uk: Комп'ютерні науки

description: Creating modern games in Kotlin forces you to use non-object oriented graphic languages and getting your hand dirty with native resource managemente. With wrappers around OpenGL and Vulkan, we make powerful graphics familiar to jvm devs and type-safe. Vulkan and OpenGL are the cross-platform standard for creating modern games and graphics. However, their respectively stateless and state-based systems have no relation to an object-oriented language like Kotlin and you have to be careful to handle native resources interacting with the API. Wrappers that we have built at Kotlin Graphics allow for them to become object oriented. This talk will teach the attendees how to use our wrappers VKK and GLN for Vulkan and OpenGL respectively in order to create performant, modern graphics. Graphic power meets Kotlin expressiveness VKK and GLN bring features such as type safety through inline classes and enums, DSL constructs, extension functions, typealias, less verbosity, pure jvm allocation strategy and an easy to pick up system. Because of the type-safety guarantee, we can directly call the native methods without performing potentially expensive checks. This allows users of Kotlin to create performant, modern games like those you could build on C or C++.

uk: вхід без авторизації

name: How Kotlin can change developer experience with modern graphics APIs


uk: Комп'ютерні науки

description: Historically, programming heterogeneous systems has been quite a challenge. While programming support for basic general-purpose accelerators such as GPUs has become quite mature in many ways, general heterogeneous SoCs in particular can feature a much broader range of accelerators in their efforts to minimize power consumption while maximizing performance. Many SoCs, though, are designed with accelerators tailored for the domain -- such as signal processing -- in which they’ll be used: Domain-Specific SoCs. As SoC platforms become ever-more heterogeneous, we think that application developers shouldn’t need to waste time reading datasheets or APIs for SoC-specific kernel extensions just to take full advantage of their hardware. With this in mind, in this talk we will discuss strategies we are using to automate mapping of LLVM-compatible languages to heterogeneous platforms with no intervention (not even #pragmas) from the programmer. To this end, we present our prototype of a software stack that seeks to address both of these needs. To meet the first need, we developed an LLVM-based hybrid compile/run-time toolchain to extract the semantic operations being performed in a given application. With these semantic operations extracted, we can link in additional libraries that enable dispatch of certain kernels (such as a Fast Fourier Transform) to accelerators on the SoC without user intervention. To evaluate the functionality of this toolchain, we developed a runtime system built on top of QEMU+Linux that includes scheduling and task dispatch capabilities targeting hypothetical SoC configurations. This enables behavioral modeling of these accelerators before silicon (or even FPGA) implementations are available. The focus here will be on the LLVM-mapping aspects, but a brief overview of our SoC simulation environment will be presented as well.

uk: вхід без авторизації

name: Automating Programming and Development of Heterogeneous SoCs with LLVM Tools


LLVM and GCC: Learning to work together

uk: Комп'ютерні науки

description: At the GNU Tools Cauldron we held a panel discussion on how GCC and LLVM can work together. The video of that discussion can be seen at https://www.youtube.com/watch?v=PnbJOSZXynA. We proposed a similar discussion to be held at the LLVM Developers Meeting, but the reviewers suggested that such a discussion would be better held as part of the FOSDEM LLVM Devroom, since that was more likely to attract GNU developers as well. We wish to explore how Clang/LLVM and the GCC can work together effectively. The participants will explore opportunities for co-operation between the projects. Areas to be covered include: collaboration on issues related to language standards, changes to existing standards or implementing new ones; maintaining ABI compatibility between the compilers; interoperability between tools and libraries e.g. building with clang and libstdc++ or building with gcc and linking with lld; and communication channels for developers via bugzilla or mailing lists. The compilers are part of wider projects providing all the components of the tool chain, and we anticipate the discussion will roam to low level utilities, source code debuggers and libraries as well. We hope the output of the discussion will inform future work between the two communities. The panelists are Arnaud de Grandmaison is a Director of the Linux Foundation, currently working at Arm. He has been developing with LLVM for his last 10+ years, to support custom architecture or enable architecture exploration. Pedro Alves is a global mainainer and major contributor to the GNU Debugger (GDB) Tom Tromey is a long-time GNU maintainer. He wrote Automake, worked on gcj and Classpath, and now is a GDB maintainer.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: Dhrystone and Coremark have been the defacto standard microcontroller benchmark suites for the last thirty years, but these benchmarks no longer reflect the needs of modern embedded systems. Embench™ was explicitly designed to meet the requirements of modern connected embedded systems. The benchmarks are free, relevant, portable, and well implemented. In this talk we will present the results of benchmarking Clang/LLVM for various IoT class architectures using Embench. We shall look at - how code size and speed varies across architectures when compiling with Clang/LLVM. - how Clang/LLVM performance has evolved over time - how Clang/LLVM compares against other compilers, notably GCC - the effectiveness of various compilation techniques (LTO, Combined Elimination, Profile Guided Optimization) The aim is not to show which architecture or compiler is best, but to gain insight into the detail of the compilation process, so that all compilers and architectures can learn from each other.

uk: вхід без авторизації

name: Benchmarking LLVM using Embench: What does it tell us about the compiler?


Open Cubic Player and retro music

uk: Комп'ютерні науки

description: This presentation includes multiple topics mixed together * Porting a DOS multimedia program into Linux/BSD * How music was composed/stored in old type of games from the 8bit era, up into the amiga (and partly the DOS world) * How does audio/music hardware work. C64 SID, ZX-Spectrum and alike, Amiga, Adlib FM-synth OPL2/3 and General Midi As a child, I was exposed to Cubic Player. This program was a text-based music player. All the color full texts mesmerized me and it gave a direct visual feedback of how the music was generated. During teenage years I learned programming and got introduced to Linux. All the sourcecode for everything was available. The kernel, multimedia libraries, tools, all kind of APIs. If there are anything you wonder how works, you can inspect it. If you are unable resolve a specific detail in your own project, try to find another project that has done something similar! But for playback of these Amiga style modules, there was no programs that had the same charm as Cubic Player. Programs like mikmod, XMMS, Audacious only displayed playlist, maybe instrument-names and maybe an spectrum analyzer. When I discovered that Cubic Player had been released as Open Cubic Player. I grabbed the source code and started to study it. All of it was based on direct hardware access, as it was written for DOS. Direct access to video-memory/hardware, raw keyboard scan codes, hardware interrupts for timers allowing background rendering of audio if needed etc. A natural candidate for a novice programmer to port? Slowly I went through one and one single file of the original source code. * Lots of logic could be kept * Some could be thrown away like direct audio hardware drivers * Some needed heavy rewrites like video output * Assembler needed to be rewritten into C inlines * The timer interrupt porting caused a zero-day kernel bug to be discovered https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2004-0554 When text appears on the screen, and audio (highly distorted in the beginning) appeared, was a magical feeling. Progress was faster when the goal felt to be well within the reach. When you the make your code public, people start to use it... and you start to get feedback like: * Program is unable to compile on other platforms * Program crash on other platforms * Specific crashes that only happens for some few people - compiler bugs (these were more common back in the days) How did old systems playback music? Using specific hardware circuits. How is music composed / stored / playback? We will take a deep dive into these two questions on these platforms: ZX-Spectrum 128 .AY files - Using code chopped out from "aylet" Atari ST .YM files - Using ST Sound Library C64 .SID files - libsidplay OPL2/OPL3 style - libadplug Amiga style modules General MIDI - TiMidity++ Open Source makes it possible to combine the work and effort from multiple volunteers. Not everything is a always an easy walk in the park, but it sure makes it easier than writing everything from scratch when there are known working code that can be either be used as a template or wrapped around.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: The RISC-V H-extension (aka hypervisor extension) is suitable for both Type1 and Type2 hypervisor. We have ported two hypervisors for RISC-V: Xvisor (Type1) and KVM (Type2). We show the current state and furture work for both hypervisors.

uk: вхід без авторизації

name: RISC-V Hypervisors: Where are we ? What next ?


Improving Ibex Performance

uk: Комп'ютерні науки

description: Ibex implements RISC-V 32-bit I/E MC M-Mode, U-Mode and PMP. It uses an in order 2 stage pipe and is best suited for area and power sensitive rather than high performance applications. However there is scope for meaningful performance gains without major impact to power or area. This talk describes work done at lowRISC to analyse and improve the performance of Ibex. The RTL of an Ibex system is simulated using Verilator to run CoreMark and Embench and the traces analysed to identify the major sources of stalls within them. This informs where improvements should be targeted. The open source implementation tools Yosys and openSTA are used to assess potential timing and area impacts of these improvements. In this talk you’ll learn about the pipeline of Ibex, methods to analyse the performance of CPU microarchitecture and how to use Yosys and openSTA to analyse what limits clock frequency in a design.

uk: вхід без авторизації


uk: Комп'ютерні науки

description: A talk about cargo-deny, why we created it, and how it helps us manage our dependencies in the long term. The slides are available on Github, it uses reveal-md to present the slides, or you can just browse the contents of all the slides in their text form in slides.md

uk: вхід без авторизації

name: cargo deny: Fearlessly update your dependencies


uk: Комп'ютерні науки

description: rav1e is a fast AV1 encoder written in rust (and plenty of assembly), released monthly. Since the 0.1.0 release we try to make sure we provide an adequate speed or quality boost compared to the previous. This talk is about what tools are available in the rust ecosystem and what are the practices that worked best for us. The presentation will touch the following topics: - Exploring a codebase and profiling it effectively, both for cpu usage and memory usage. - Which are the optimization strategies that worked for us better (critical path analysis vs peak consumer) - Benchmarking and tracing I'll provide examples on what tools worked well or not so well and what currently I consider the best and most promising tools for each tasks.

uk: вхід без авторизації

name: Optimizing rav1e: Effective profiling techniques and optimization strategies


uk: Комп'ютерні науки

description: Complying with license obligations can incur a lot of hurdles. This results in developers skipping compliance or failing to achieve correct compliance. To compound this, package authors sometimes fail to describe the license of their package clearly or omit license information of included files. ClearlyDefined is a community curated repository of discovered license information for Crates packages, among other types. This talk will cover: the importance of the license obligations of the dependencies of your Rust package, tool, or application. How to discover the license information of those packages. And demonstrate some Cargo compatible tooling that allows automated license recordkeeping and notice file generation as a part of your CI system.

uk: вхід без авторизації

name: Discover dependency license information with ClearlyDefined: License discovery and record-keeping for crates


uk: Комп'ютерні науки

description: Rust is a language with a healthy ecosystem and a strong developer base. With built-in dependency management it's easy to build and install new programs even for those who have never used the language. But how is its adoption among Linux distros? Come with me as we figure out how best to package rust libraries and binaries in Linux distributions which demand total control over dependency management.

uk: вхід без авторизації

name: Packaging Rust crates in GNU Guix: How hard could it possibly be?


RedisJSON: A document DB in Rust

uk: Комп'ютерні науки

description: Over the last decade, Redis has become one of the most popular NoSQL DBs delivering on the promise of high throughput and low latency. What started as a pure C code base is gradually being augmented with Rust due to the trifecta of safety, concurrency, and speed. A primary example is thre RedisJSON module which turns Redis into a document DB. The talk outlines the principal architecture of the re-implementation of RedisJSON, the challenges encountered and the solutions for these. The focus is on the practical aspects rather than conveying theoretical knowledge. A comparison with other open source document DB concludes this presentation, concentrating on latency and throughput aspects.

uk: вхід без авторизації


uk: Комп'ютерні науки

uk: вхід без авторизації

name: Sharing memories of Python and Rust: The story of a lifetime inside Mercurial


uk: Комп'ютерні науки

description: Rust compiler comes with a few tools, rustdoc is one of them. It is THE standard rust tool to generate documentation for your crates. Rust compiler comes with a few tools, rustdoc is one of them. It is THE standard rust tool to generate documentation for your crates. You can write documentation using "///" or "//!" patterns (which are syntaxic sugar over #[doc = "..."]). It generates HTML which can used locally without a need for internet connection. The documentation search is running in JS directly in your browser. You have a source code viewer integrated. You can pick different themes (and even add one yourself). It works with javascript disabled. It provides settings to make your docs browsing more comfortable. You can generate docs with extra content (take a look at https://docs.rs/pwnies for a good example!). But not only it generates documentation, it also adds things for each type that you didn't know was available thanks to the "Auto-traits implementation" and "Blanket implementation" sections. In addition to generate documentation, it provides functionalities such as an integrated documentation's test runner (which themselves can be quite customized!). It also provides lints that can you deny (missingdocs, missingdoc_example). With just all this, rustdoc is already a quite complete tool. But more will come in the future: more interactive source code viewer automatic link generation based on the item name more output formats supported (json would be the first) cfgs (doctest and doc) doc aliases for search (for instance, "*" proposes pointer in the std lib)

uk: вхід без авторизації

name: rustdoc: beyond documentation: All the goodies packed in rustdoc, and more


uk: Комп'ютерні науки

description: sled is an embedded database that takes advantage of modern lock-free indexing and flash-friendly storage. rio is a pure-rust io_uring library unlocking the linux kernel's new asynchronous IO interface. This short talk will cover techniques that have been used to take advantage of modern hardware and kernels while optimizing for long term developer happiness in a complex, correctness-critical Rust codebase.

uk: вхід без авторизації

name: sled and rio: modern database engineering with io_uring


uk: Комп'ютерні науки

description: WebGPU is a new graphics and compute API designed from the ground up by a W3C community group. It's a successor to WebGL, which also has a chance to become a standard on native platforms. We are going to talk about the API itself as well as our Rust-based implementation "wgpu". Expected prior knowledge / intended audience: basic familiarity with one of the graphics APIs is good but not required. We'll explain in details how this is different from existing APIs. "wgpu" is the native implementation of this API in Rust, running on top of Vulkan, Metal, D3D12, D3D11, and potentially OpenGL. This is a talk about the API architecture being designed as well as our implementation of it. We want to share the experience of leveraging the power of Rust ecosystem and language in order to build this level of abstraction. We'll show a few demos and spread excitement about the new API. The talk is related to the Fosdem 2018 talk about gfx-rs: the old talk mentioned WebGPU as one of the clients for the low-level abstraction.

uk: вхід без авторизації

name: Building WebGPU with Rust: The new foundation for graphics and compute


uk: Комп'ютерні науки

description: TLDR: Even though VM Introspection has lots of applicable areas, it has not gained it's full potential yet, due to a fragmented ecosystem. This talk will quickly review the state of the technology and we will present our solution: a Rust library aiming at solving the issue mentionned before, in order to make VMI a commodity in the future for apps developers, enabling them to do: Advanced Malware Analysis Live-Memory Analysis Complex debugging OS Hardening Snapshot-based fuzzing Targeting any VMI compatible hypervisor or emulator. From stealth malware analysis to OS hardening through fuzzing, virtual machine introspection is expanding the possibilities offered by our hypervisors, shifting our view of virtual machines, from opaques containers to fully transparent and instrumentable systems. Today the VMI ecosystem is made of a multitude of applications, targeting one hypervisor or emulator, with their own semantic library. (Examples includes Drakvuf, PANDA, PyREBox, icebox, etc...). If we want to make the most out of VMI in the future, we need to build the libraries that will unify this ecosystem and let the developers focus on what matters: building quality VMI apps. This is where libmicrovmi comes into play. It aims to solve this problem, by providing a core, foundation library, written in Rust, to be cross-platform, hypervisor-agnostic and emulator-agnostic, on top of which higher-level libraries and apps can rebase. Rust makes a lot of sense for VMI for 2 main reasons: Rust is safe: considering that we are processing untrusted input from virtual machines, we cannot allow any crash or exploitation in the introspection agent. Also one of our use case is OS hardening, which needs an excellent level of trust Rust is fast: processing an event requires to pause the VCPU. The longer the pause, the more delayed the guest execution will be, and when scaling to thousands of events per second this can dramatically influence how many breakpoints you are willing to put, especially on production systems. Speed matters. Therefore Rust is the de facto choice for VMI apps in the future, and we are building it today, by providing libmicrovmi, a new foundation for VMI. Libmicrovmi has drivers for: Xen KVM Hyper-V (in progress) What is VMI ? Vrtual Machine Introspection is a concept born in a 2003 research paper titled "A Virtual Machine Introspection Based Architecture for Intrusion Detection". The idea resides in inspecting and understanding the real-time high-level state of a virtual machine, based on the hardware layer, for security purposes. Since then the technology has made its way, from research and academic developments to being fully integrated and supported into mainstream hypervisors, like Xen. What are the use-cases ? The initial population who adopted VMI has been malware sandbox providers. Since common malware had a tendency to hide from debuggers, the level of stealth reached with this technology made it perfectly suited for this job, alongside the full system view. Today VMI has grown to be applied in various domains: Debugging Malware Analysis Live Memory Analysis OS Hardening Fuzzing What is the state of the technology today ? As of today, Xen is the leading hypevisor, haivng VMI APIs since 2011. And since 2017, both KVM and VirtualBox have patches available, and even reviewed on the mailing list for KVM. Regarding the libraries available, LibVMI stands out, as it provides a unified, hypervisor-agnostic, VMI API to applications, and a well-known malware analysis framework (Drakvuf) is based on it. However, most of VMI applications today do not share the same common set of core libraries, which makes the ecosystem fragmented and hard to deal with, where a lot of efforts is spent solving the same problems everyone has, isolated by their own stacks. Why Rust ? This is where Rust comes into play. The language itself combines 3 important features: Safety: new VMI applications have a focus on OS hardening, rebasing your trust on an introspection agent to avoid a kernel compromise is a huge deal, especially when the agent has high-privileges. Speed: the amount of hardware events that can you can handle per second will define how much impact your agent has on the guest execution. This has to be kept as low as possible, otherwise the technology's adoption won't go further than private malware analysis systems. Cross-platform: Rust's build system and standard library allow to effortlessly build a cross-plaform library, which is a requirements to bring developers using KVM, Hyper-V or even VirtualBox to share the same library. Building this core library that will unify the ecosystem is the goal of libmicrovmi. Related work I have been building a hypervisor-level debugger, based on LibVMI. It can introspect a Windows guest and debug a specific process, while providing a GDB stub to be plugged into your favorite GDB fronted (IDA, radare2, etc ....)

uk: вхід без авторизації

name: Rustifying the Virtual Machine Introspection ecosystem: Why Rust is the best language for introspection agents in the future


uk: Комп'ютерні науки

description: There was a huge progress in Rust tools for WebAssembly in the last year. Let's review some of the most noticeable changes. The talk is mostly about wasm-bindgen.

uk: вхід без авторизації

name: Progress of Rust and WASM in 2019: The year in review


uk: Комп'ютерні науки

description: Gneiss is an abstraction layer for component based environments that aims to provide a foundation for formally provable components. It enables the creation of platform independent, asynchronous components in SPARK and provides function contracts that allow to prove the correct interaction with the underlying platform.

uk: вхід без авторизації

name: Gneiss: A Nice Component Framework in SPARK