|
|
Log in / Subscribe / Register

LWN.net Weekly Edition for April 2, 2026

Welcome to the LWN.net Weekly Edition for April 2, 2026

This edition contains the following feature content:

This week's edition also includes these inner pages:

  • Brief items: Brief news items from throughout the community.
  • Announcements: Newsletters, conferences, security updates, patches, and more.

Please enjoy this week's edition, and, as always, thank you for supporting LWN.net.

Comments (none posted)

The many failures leading to the LiteLLM compromise

By Jonathan Corbet
March 27, 2026
LiteLLM is a gateway library providing access to a number of large language models (LLMs); it is popular and widely used. On March 24, the word went out that the version of LiteLLM found in the Python Package Index (PyPI) repository had been compromised with information-stealing malware and downloaded thousands of times, sparking concern across the net. This may look like just another supply-chain attack — and it is — but the way it came about reveals just how many weak links there are in the software supply chains that we all depend on.

A Trivyal pursuit

This story starts with a different project, Trivy, which is a widely used security scanner, distributed under the Apache-2.0 license. As is often the case with these scanners, Trivy releases normally include tests for newly discovered vulnerabilities, so projects that depend on Trivy to detect potential security problems in their code have every reason to want to rerun their scans when a new release is made. Many projects hosted on GitHub thus set up an action so that, when a new release tag shows up for Trivy, new scans are automatically run, just in case Trivy has any new problems to point out.

On March 20, Paul McCarty announced that Trivy had been compromised; Philipp Burckhardt wrote up a detailed report on what was done. Somebody had managed to obtain credentials giving write access to the Trivy repository. This attacker then placed commits with malware in that repository, but they did so without changing any existing branches, avoiding the notifications that would have normally gone out in response to such changes. Instead, a large number of release tags were force-pushed to point to the new commits, which was sufficient to cause other projects to perform automatic Trivy runs.

The Trivy malware was of the information-stealing variety; whenever it ran within a project's context, it would sweep up everything it could get its virtual hands on and send it back to the attackers. Trivy itself was never the primary target; it was just a stepping stone giving access to other projects of interest. Just how many projects this exploit was able to hit may not become clear for some time.

On to LiteLLM

One of the projects that fell into that trap was LiteLLM; specifically, the PyPI credentials of one of its developers (krrishdholakia) were harvested. Those credentials were then used to upload compromised versions of LiteLLM (1.82.7 and 1.82.8) to PyPI, where they would subsequently be downloaded by the large number of people who install LiteLLM each day. Specifically, according to futuresearch, there were 47,000 downloads of the compromised LiteLLM package in just 46 minutes.

The word went out quickly, but the distribution of information was hampered by a set of hostile bots that targeted the LiteLLM GitHub issues (#24512 and #24518) with hundreds of spam comments, creating vast amounts of noise. At one point, people were advised to follow the Hacker News discussion rather than the GitHub issues themselves. The malware on PyPI was taken down quickly, but a lot of damage had been done by then.

The second compromised version of LiteLLM, in particular, used an insidious method to run the hostile code on systems where it was installed. Normally, if one installs a compromised Python program, that program will not be able to do anything until somebody runs or imports it. But when the Python interpreter starts up, it looks in the site-packages directory for files with a .pth suffix, and automatically executes the contents of every one it finds. Normally these files are used to configure Python's import paths and such, but they contain ordinary Python code. The litellm_init.pth file added by the compromised LiteLLM package was thus run anytime a Python interpreter started in the install environment (which may be anywhere in the compromised system if LiteLLM was not installed in a virtual environment), regardless of whether anything from LiteLLM itself was run.

That code, once again, gathered up all of the information it could find, including environment variables, SSH keys, Git credentials, Kubernetes secrets, shell histories, crypto wallets, and more. The whole thing was encrypted, packaged into a tar file, and pushed to a system behind the attacker-controlled litellm.cloud domain. There is no way to know how many of these uploads were done or what was in them — until the attackers make use of what they have learned.

Anybody who may have installed the compromised packages clearly has a significant cleanup job to do, including changing any credentials that might have been exfiltrated. The compromised code, for both Trivy and LiteLLM, has been taken down and should not attack any others, but this episode is far from over.

There are going to be vast numbers of compromised systems out there. It seems unlikely that LiteLLM was the only project that was compromised by the Trivy exploit. We have not heard about the others (with the exception of the telnyx compromise reported just as this article was going out); perhaps the attackers have not yet acted on other credentials that they may have acquired. But the attackers are still out there, and they seem unlikely to sit on any such material for long; expect to hear news of other compromised projects. There is also the matter of all those systems that installed the bad LiteLLM packages; again, there is a wealth of information that will have been collected by the attackers, and they seem likely to want to make use of it at some point.

In the end, this episode represents a multi-level cascading failure. A branch-change notification mechanism was bypassed. A software system meant to improve security instead compromised it. Important credentials were stored where automated exploits could read them, and two-factor authentication was evidently not in use. The protections meant to prevent the uploading of hostile packages failed. The ability of Python packages to add configuration code allowed an exploit to reach beyond the compromised package itself. Any of these failures on their own would have been enough to cause a lot of damage; taken together, then enabled a catastrophic security failure that may have only begun to play out.

Comments (41 posted)

Objections to systemd age-attestation changes go overboard

By Joe Brockmeier
March 31, 2026

In early March, Dylan M. Taylor submitted a pull request to add a field to store a user's birth date in systemd's JSON user records. This was done to allow applications to store the date to facilitate compliance with age-attestation and -verification laws. It was to be expected that some members of the community would object; the actual response, however, has been shockingly hostile. Some of this has been fueled by a misinformation campaign that has targeted the systemd project and Taylor specifically, resulting in Taylor being doxxed and receiving death threats. Such behavior is not just problematic; it is also deeply misguided given the actual nature of the changes.

Age-attestation and -verification laws that place requirements on operating-system providers have passed in California and Brazil, and are being discussed in many other states and locations. This has led a number of Linux distributions to consider ways that they can comply with the laws if necessary. One idea that is being worked on is to add parental controls to the XDG Accounts portal which is a mechanism that allows applications to query for information about users, such as their name or avatar image. It can gather this information from various data sources, including systemd.

Taylor's changes would allow a system administrator to set and modify each user's birth date stored as birthDate in the YYYY-MM-DD format. Unprivileged users would not be able to modify the date, but could query it, so applications could retrieve the user's age via the Accounts portal. Note that this change does not automatically require or even prompt a user to provide their birth date; it only provides a way for applications to store the date. In other words, Taylor has only implemented one feature that could be used in a larger age-attestation system. His work does not implement an attestation system on its own, nor would such systems be prevented if the change were reverted; the birth date could simply be housed in another data store.

There have been some reasonable objections to the feature; as one example, Jeremy Soller, who works for System76, said that the company had been in talks with legislators, and it might be that open-source operating systems would be exempted from these laws in the end. Even if that does not happen, he worried that a dependency on systemd "which is decidedly unportable to non-Linux" systems, would require two implementations to exist.

Zbigniew Jędrzejewski-Szmek replied that while it was possible California's law would be changed, "similar ideas are popping up in other contexts and it's unlikely that they'll all go away". Ultimately, Luca Boccassi merged Taylor's changes after a bit of back-and-forth about the implementation.

Age attestation vs. verification

It is worth calling out that there is also a substantial difference between age attestation and age verification; attestation allows users or administrators of a system to provide information about their age. The person controlling the device is supplying the information. What is being discussed, for Linux systems, is a way for the user or administrator to supply the user's birth date. How that will be implemented for various desktop environments and distributions is still up in the air; the systemd birthDate field would be a small piece of any attestation systems that wind up being implemented.

The most important distinction is that an attestation system is under the control of the local administrator of a system; no documents are being checked or handed to a third party. Nothing prevents a person controlling the Linux system from supplying a random date rather than the accurate date. The services used for age attestation could also be disabled entirely by the administrator of the system, of course. Just because a Linux distribution ships a feature does not mean that users of the distribution are obliged to keep it turned on; but it should serve to satisfy the legal requirements placed on operating-system suppliers.

Age verification, on the other hand, generally requires furnishing a third party with some kind of proof—such as government identification—about one's birth date. There are many reasons to strongly object to age-verification schemes; privacy concerns and the potential for identity theft when third-party providers inevitably suffer data breaches are two that quickly come to mind. However, age verification is not what is being considered here. The fact that the two are being conflated, though, is not surprising—especially since Taylor used the term "age verification" in his pull request.

Controversy

As a rule, it does not take a great deal to cause a controversy in the open-source community. We are, to put it mildly, an opinionated bunch. Many people choose to use Linux because they wish to have full control over their operating system and applications; a change that offers exactly zero real benefit to the user other than compliance with a poorly thought-out law is not going to spark joy. One could predict a certain amount of objection and opposition to implementing age attestation no matter what.

However, the controversy appears to have been helped along by a few actors looking to stir the pot. In a discussion on the Debian developer mailing list about age-attestation systems, Otto Kekäläinen pointed to a site called The TBOTE Project that has been publishing information on the lobbying campaign to push an age-assurance law that has been introduced in a number of states across the US. Age assurance means that a device provides attestation of a user's age that has been verified, rather than self-supplied. For example, New York's Senate Bill S8102A requires "manufacturers of internet-enabled devices to conduct age assurance to determine a user's age category". This means that a device owner will likely need to perform some kind of age verification, and then the result would be stored locally.

The site also dedicates a section to the systemd project. To say it is conspiratorial in nature would be an understatement. It attempts to cast the systemd change as a sinister plot that has "altered the identity infrastructure of every major Linux distribution". While the site does not shy away from casting a spotlight on individuals in the systemd project, it does not disclose the person or persons who are behind The TBOTE Project. Aaron Rainbolt said that the site had been "used as part of a doxxing/harrassment attack" against an individual, which seems to refer to Taylor. "Given that the person running this repo actively helps doxx people, I consider them (semi-)malicious".

The TBOTE Project site is not alone in trying to fan the flames. Sam Bent, who describes himself as a YouTuber and content creator on his LinkedIn profile, published a hit piece against Taylor on March 20. It would also be best described as "malicious"; the less said about its contents the better, but it seems to have inspired some number of personal attacks against Taylor well beyond the usual objections in a GitHub pull-request comment thread. In an interview with the "It's FOSS" web site, Taylor described some of the backlash he has received; it is far beyond what an open-source contributor (or anyone else) should ever have to put up with:

I understood that the change was not going to be popular, but I was expecting civil discourse and a level-headed response. Things like death threats and harassment are not okay, especially when it negatively impacts unrelated third parties. However, the doxxing (and I am NOT just talking about my name, email and resume – that stuff is on my website, and is reasonably public. I don't commit with a pseudonym and I think it's reasonable to critique my contributions), hate mail, racism, homophobia, antisemitism, editing of my photo, turning my profile picture into memes and making fun of my appearance, etc. made me lose a bit of faith in the FOSS community. I'm really disappointed at the reaction. We should do better than this.

The unpleasant truth

The frustration and anger over government and industry pushes for age verification is justified; taking it out on open-source maintainers or projects is not. Reasonable people can disagree whether it is likely that, say, California would choose to prosecute Linux vendors or projects for non-compliance. We can certainly hope that logic would prevail, but one only needs to look around at the world today to determine that logic wins the day much less often than it should. Hoping that legal authorities will choose to overlook a project, or that the stars will align to provide a positive legal outcome, is not an effective strategy when it comes to avoiding real legal risk.

If a person or project wishes to take on that risk to challenge such laws, that is commendable; but demanding that another person or project take on such risks is unreasonable. The monetary costs of mounting a defense against a state government, even if ultimately successful, would be substantial and more than many projects could afford.

The efforts to push age-verification laws and similar unpleasantness did not show up on the open-source community's doorstep without warning. These political winds have been gathering strength for years; if they are to be challenged, they need to be dealt with by movements and organizations designed to take them on. Rather than harassing individual maintainers, for example, concerned people would do better to put their weight behind organizations like the Electronic Frontier Foundation (EFF) that have spent decades fighting exactly this sort of thing.

It is possible to counter legislative threats to open source and privacy without lobbing death threats at open-source maintainers (or anyone else). The European Union's Cyber Resilience Act (CRA) is a somewhat recent example. The CRA sets automatic security update and incident report requirements for products with digital elements; in non-legislative speak, this means software and devices that run software. The original drafts of the legislation would have saddled freely available open-source software with the same requirements as commercial products.

One might consider it reasonable and even desirable, for example, to require the manufacturer of a router, mobile phone, or car-entertainment system to provide security updates. But the same requirements would have applied to open-source maintainers and projects even when no money had changed hands. That, of course would have been a disaster for open source. FOSS organizations, such as the Eclipse Foundation, Linux Foundation Europe, Open Source Initiative, as well as several others pushed back politely, but firmly, and succeeded in having the CRA draft modified to exempt open-source software.

Attacking open-source maintainers, projects, or Linux distributions is not going to stop government and industry pushes for age verification. In fact, it will not be effective at anything except contributing to maintainer burnout, weakening the larger community, and perhaps encouraging developers to do more behind closed doors—or to stop contributing entirely.

Comments (105 posted)

The role of LLMs in patch review

By Daroc Alden
March 31, 2026

Discussion of a memory-management patch set intended to clean up a helper function for handling huge pages spiraled into something else entirely after it was posted on March 19. Memory-management maintainer Andrew Morton proposed making changes to the subsystem's review process, to require patch authors to respond to feedback from Sashiko, the recently released LLM-based kernel patch review system. Other sub-maintainers, particularly Lorenzo Stoakes, objected. The resulting discussion about how and when to adopt Sashiko is potentially relevant to many other parts of the kernel.

Morton began by saying that the current way Sashiko integrates into the memory-management workflow isn't working. He merges patches to his tree, and "then half a day later a bunch of potential issues are identified." Morton stated that he was going to further increase the lag between seeing a patch set on the mailing list and merging it to his tree, to give Sashiko time to produce feedback and patch authors time to respond to it. He also wanted its reviews distributed to a wider audience — partly to better determine how useful its comments are, which he is "paying close attention to".

Stoakes said that he would look at the Sashiko reviews for the patch set, but asked Morton to hold off on incorporating it into the subsystem's workflow. He said that he appreciates the tooling, but that it is currently too noisy to use in that way. Stoakes referenced his message in the thread introducing Sashiko (that began on March 17) where he expressed the opinion that its false-positive rate was higher than his own experience using Chris Mason's kernel-review prompts. David Hildenbrand agreed that the false-positive rate was too high to be useful.

Roman Gushchin, Sashiko's creator, told Morton that he was actively working on integrating Sashiko with the kernel's email-based workflow, and that he hoped to have it sending reviews to appropriate recipients within the next week. Morton took the opportunity to ask about another problem with the tool — that many patch sets sent to the mailing list fail to apply in Sashiko's environment. In a follow-up message he expressed his intention not to apply patches to his tree that the system couldn't. Gushchin explained that Sashiko tries to apply patch sets to several bases, in order. For memory-management patches, it uses the patch set's base commit (if specified), then the mm-new tree, followed by mm-unstable, mm-stable, linux-next, and finally Linus Torvalds's tree. The review system evaluates the code in the first tree where the application attempt is successful. He didn't address why mailing-list patches would be failing to apply to these trees, however.

Stoakes asked Morton to hold off on integrating Sashiko so deeply into his workflow:

Andrew, for crying out loud. Please don't do this.

2 of the 3 series I respun on Friday, working a 13 hour day to do so, don't apply to Sashiko, but do apply to the mm tree.

I haven't the _faintest clue_ how we are supposed to factor a 3rd party experimental website applying or not applying series into our work??

He went on to say that he was not attempting to disrespect Gushchin or his efforts, but that even Gushchin had agreed that the tool was not ready to become a blocking component of the development process. Gushchin replied to say that working on Sashiko had increasingly shown him the subjectivity of reviews, and the importance of social context in providing good reviews. He acknowledged that it wasn't "perfect in any way" but suggested that some level of false positives (for example, 20%) was acceptable from a tool that catches the majority of bugs before they're merged. He suggested that this might be a reasonable lens through which to view Sashiko's current performance and future development.

Stoakes replied to clarify that he was objecting to Morton's unilateral demand that "every single point Sashiko raises is responded to". He was emphatically not blaming Gushchin for failures of the memory-management subsystem's review model, and thought the tool was promising. He reiterated his perception that the tool's false-positive rate was much higher than other people were claiming, and that — given its inexhaustible ability to produce new reviews that require human attention — it was important to think critically about what role it can play in the review process. Incorporating the tool in its present state, as anything other than a simple advisory, would increase the workload on the already overworked memory-management maintainers, he said.

This sentiment resonated with Pedro Falcato, who agreed that Sashiko should remain optional for the time being. Morton disagreed:

Rule #1 is, surely, "don't add bugs". This thing finds bugs. If its hit rate is 50% then that's plenty high enough to justify people spending time to go through and check its output.

[...]

Look, I know people are busy. If checking these reports slows us down and we end up merging less code and less buggy code then that's a good tradeoff.

Avoiding bugs is important, Falcato agreed, but: "I simply don't think either contributors or maintainers will be particularly less stressed with the introduction of obligatory AI reviews." He suggested that simply codifying the memory-management review process (as the netdev review process has been) would be more helpful than mandating the use of Sashiko (a suggestion that Mike Rapoport later supported). Falcato also pointed out that Sashiko is experimental, untested software, and it should probably not be made critical to the process yet on those grounds.

Morton responded by looking at actual replies to Sashiko's reviews on the linux-mm mailing list. Out of about 35 emails, 22 received replies indicating that alterations were definitely needed, with the rest being more ambiguous, being false reports, or not being responded to. He expressed the opinion that such a hit rate of finding actual problems in patches was worth the pain of figuring out how to integrate Sashiko into the process. "That's a really high hit rate! How can we possibly not use this, if we care about Rule #1?"

Stoakes disagreed with Morton's interpretation of the data, pointing out that those 22 emails indicate cases where the tool was correct in at least one individual observation. Since it normally sends multiple suggestions and questions per review, the actual rate of false positives for individual comments must be substantially worse than that.

Stoakes again reiterated that he found Sashiko useful, and was using it in his own reviews to some degree. The problem was in making it a mandatory part of the process. He suggested that Morton should delegate the decision of whether and how to use Sashiko to the sub-maintainers, avoid requiring that its automation cleanly applies a patch before accepting it, avoid requiring that every element of its reviews be responded to, and trust sub-maintainers to discard any parts of the reviews that are not both valid and important.

Sashiko is, at the time of writing, not even a month old. According to its statistics page, it has written over 10,000 reviews in that time, with an average of approximately 3,500 words of output (counting quoted source code) per patch. It is, quite literally, producing words faster than any individual person could reasonably read. But approximately half of those words, according to various different statistics, are about bugs that no human reviewer spotted ahead of time — either due to the difficulty of reviewing complex kernel code, or just due to a lack of infinite time to dedicate to the prospect. And several kernel contributors are finding the reviews useful.

As is the case unfortunately often, the problem posed by the use of Sashiko is a social one, not a technical one: how much extra reading, hallucinated problems, delays in the review process, robotic gatekeeping, and reliance on proprietary models is acceptable in order to make sure the kernel accepts less buggy code? It's a question that will eventually touch every subsystem of the kernel and beyond, not just the memory-management code, and one that undoubtedly deserves a lot of discussion. There are no easy answers, but hopefully the kernel community will eventually be able to reach a consensus.

Comments (16 posted)

Vibe-coded ext4 for OpenBSD

By Jonathan Corbet
March 26, 2026
A number of projects have been struggling with the question of which submissions created by large language models (LLMs), if any, should be accepted into their code base. This discussion has been further muddied by efforts to use LLM-driven reimplemention as a way to remove copyleft restrictions from a body of existing code, as recently happened with the Python chardet module. In this context, an attempt to introduce an LLM-generated implementation of the Linux ext4 filesystem into OpenBSD was always going to create some fireworks, but that project has its own, clearly defined reasons for looking askance at such submissions.

It all started on March 17, when Thomas de Grivel posted an ext4 implementation to the openbsd-tech mailing list. This implementation, he said, provides full read and write access and passes the e2fsck filesystem checker; it does not support journaling, however. The code includes a number of copyright assertions, but says nothing about how it was written. In a blog post, though, de Grivel was more forthcoming about the code's provenance:

No Linux source files were ever read to build this driver. It's pure AI (ChatGPT and Claude-code) and careful code reviews and error checking and building kernel and rebooting/testing from my part.

There were a number of predictable concerns raised about this code, many having to do with the possibility that it could be considered to be a derived product of the (GPL-licensed) Linux implementation. The fact that the LLM in question was almost certainly trained on the Linux ext4 code and documentation does not help. Bringing GPL-licensed code into OpenBSD is, to put it lightly, not appreciated; Christian Schulte was concerned about license contamination:

I searched for documentation about that ext4 filesystem in question. I found some GPL licensed wiki pages. The majority of available documentation either directly or indirectly points at GPL licensed code. In my understanding of the issue discussed in this thread this already introduces licensing issues. Even if you would write an ext4 filesystem driver from scratch for base, you would almost always need to incorporate knowledge carrying an illiberal license.

Theo de Raadt, however, pointed out that reimplementation of structures and algorithms is allowed by copyright law; that is how interoperability happens. One should not conclude that De Raadt was in favor of merging this contribution, though.

From the OpenBSD point of view, the copyright status of LLM-generated code is indeed problematic, for the simple reason that nobody knows what that status is, or even if a copyright can exist on that code at all. Without copyright, it is not possible to grant the project the rights it needs to redistribute the code. As De Raadt explained:

At present, the software community and the legal community are unwilling to accept that the product of a (commercial, hah) AI system produces is Copyrightable by the person who merely directed the AI.

And the AI, or AI companies, are not recognized as being able to do this under Copyright treaties or laws, either. Even before we get to the point that the AI's are corpus-blenders and Copyright-blenders.

So as of today, the Copyright system does not have a way for the output of a non-human produced set of files to contain the grant of permissions which the OpenBSD project needs to perform combination and redistribution.

Damien Miller said something similar:

Who is the copyright holder in this case? It clearly draws heavily from an existing work, and it's clear the human offering the patch didn't do it. It's not the AI, because only persons can own copyright. Is it the set of people whose work was represented in the training corpus? Was the it the set of people who wrote ext4 and whose work was in the training corpus? The company who own the AI who wrote the code? Someone else?

We don't know. The law hasn't caught up to the technology yet and we can't take the risk that, when it does, it will go in a way that makes use of AI-written code now expose us to legal risk.

These words did not resonate entirely well with de Grivel, who refused to retract his copyright claims on the machine-generated code. He also is clearly pleased with the kinds of things one can do with LLMs:

We can freely steal each other in a new original way without copyright infringment its totally crazy the amount of code you can steal in just 1h. What took 20 years to Bell labs can now be done in 20 hours straight.

The conversation went on for some time, but the result was never really in doubt; De Raadt made it clear when he said: "the chances of us accepting such new code with such a suspicious Copyright situation is zero". In the above-mentioned blog post, de Grivel added a note on March 23 that he would respond by removing all of the LLM-generated code, leaving only code that he has written himself. After this episode, though, convincing others that he really did write any subsequent versions on his own may be an uphill battle. He acknowledged that "forking OpenBSD" might be easier.

The number of people who have concluded that they can have an LLM crank out thousands of lines of code and submit the result to the project of their choice is growing quickly. Needless to say, these people are not always diligent about documenting the provenance of the work they are submitting in their own names. There may well come a time when it turns out that even the sharp eyes of OpenBSD reviewers are unable to keep all of it out of their repositories.

All of this code is setting some worrisome potential traps for the future. As Tyler Anderson pointed out, the price of these tools is unlikely to go down as development projects become more dependent on them. Who will maintain this code, when its original "author" does not understand it and has no personal investment in it, is unclear at best. And if there is, in fact, a potential copyright problem inherent in this code, there will have to be a lot of scrambling (or worse) when it comes to light. Given all of that, it is unsurprising that many projects, especially those with longer time horizons, are proving reluctant to accept machine-generated submissions.

Comments (98 posted)

Rust's next-generation trait solver

By Daroc Alden
March 30, 2026

Rust's compiler team has been working on a long-term project to rewrite the trait solver — the part of the compiler that determines which concrete function should be called when a programmer uses a trait method that is implemented for multiple types. The rewrite is intended to simplify future changes to the trait system, fix a handful of tricky soundness bugs, and provide faster compile times. It's also nearly finished, with a relatively small number of remaining blocking bugs.

Trait solving

Traits in Rust are similar to typeclasses in Haskell or interfaces in Java: they are a set of associated functions that can be implemented for different types. Library code can use the functions from a trait on any type that implements the trait, even if that type is foreign to the library. When it comes time to generate code, however, the compiler needs to know which specific type is being used, and where its trait implementation lives, so that it can call the correct function. Trait implementations can be generic, and therefore apply to multiple concrete types. Figuring out which trait implementation is relevant to a particular type is the job of the compiler's trait solver.

Most of the time, this is straightforward: the compiler just needs to find a trait implementation of the form impl Trait for Type {...}. The problem grows more complex when considering generic types. For example, a Vec can be cloned if and only if the type of elements it contains can be cloned. In the standard library, there is a trait implementation block that is equivalent to the following (after expanding some syntactic sugar and disregarding the irrelevant A parameter):

    impl<T> Clone for Vec<T>
    where T: Clone
    { ... }

This declaration can be viewed as an instruction for the trait solver: in order to find the Clone implementation for a Vec<Foo>, first find the Clone implementation for Foo. That implementation can be used to construct a working implementation for Vec<Foo>. The current trait solver follows these chains of instructions in a straightforward way. For each trait implementation that must be found, it determines whether it is best resolved through finding an impl statement or through using a where-bound (i.e. a where clause asserting that some generic type implements a trait). These can depend on other trait implementations existing, as in the Vec example, in which case the compiler adds them to a work list. In logic programming, these kinds of prerequisites that must be satisfied for another goal to be reached are called obligations; the compiler keeps taking obligations from the work list and processing them until they have all been eliminated. If they cannot be, an error is indicated.

This approach breaks down with more complicated types, however. It is possible to construct a situation where the obligations to be discharged form a loop. Doing so is a bit complicated, however, so even a minimal example is somewhat long:

    // Create a trait that has an associated generic type. Types that implement
    // Wrap correspond to a particular choice of Wrapper.
    trait Wrap {
        type Wrapper<T>;
    }

    // A singly linked list structure, with the payload omitted for brevity.
    // Each 'next' pointer goes to another list node wrapped in the Wrapper type
    // for some generic type W that must implement Wrap
    struct Link<W: Wrap> {
        next: Option<Box<W::Wrapper<Link<W>>>>
    }

    // Link structures can be formatted for debug print statements when their
    // contents can be — the omitted implementation calls the Debug
    // implementation for next's type, hence the second requirement.
    impl<W> Debug for Link<W>
    where W: Wrap,
          Option<Box<W::Wrapper<Link<W>>>>: Debug {
        ...      
    }

    // My Wrapper is a structure that wraps some other type T as its only field.
    struct MyWrapper<T = ()>(T);

    // And its associated wrapper type is just itself.
    impl Wrap for MyWrapper {
        type Wrapper<T> = MyWrapper<T>;
    }

    // Finally, wrappers can be formatted for debug print statements when the
    // wrapped value can be.
    impl<T> Debug for MyWrapper<T>
    where T: Debug { ... }

In order for the compiler to prove that Link<MyWrapper> implements Debug, it needs to show that a whole chain of requirements holds:

    Link<MyWrapper>: Debug ->
    Option<Box<MyWrapper::Wrapper<Link<MyWrapper>>>>: Debug ->
    Box<MyWrapper::Wrapper<Link<MyWrapper>>>: Debug ->
    MyWrapper::Wrapper<Link<MyWrapper>>: Debug ->
    Link<MyWrapper>: Debug

... but that chain eventually leads the compiler right back to where it started. Attempting to compile a Rust program that uses the Debug implementation of Link results in the error: "overflow evaluating the requirement `Link<MyWrapper>: Debug`".

In this case, however, it should be possible in theory for the compiler to generate an implementation of Debug for the same reason that assemblers can handle instructions that refer to their own address: the compiler can start generating the implementation, leaving a placeholder for the address, and then fill the address in once it knows it. At the stage where the trait solver runs, it isn't dealing with actual addresses, but the same idea applies; writing the Debug implementation for Link<MyWrapper> is a matter of "tying the knot" in a data structure representing the code to produce a structure that refers to itself.

The above example is contrived, but that's because this limitation of the language tends to come up in complex, highly generic code. Self-referential types are nothing new; it's only trying to abstract over them with traits that causes the problem. Code like that is not something that every programmer will need to write, but it is something that can make Rust libraries more flexible. Currently, crate authors need to work around this trait resolution problem by restructuring their interfaces to avoid creating loops in the trait solver.

A new approach

The trait solver's behavior isn't an inherent aspect of the problem, however. It's an implementation choice that was made essentially by default as the language's trait system slowly became more complex. The project to rewrite the trait solver began in 2015 with Chalk, an attempt to formalize Rust's type system. It compiles the rules of the type system — such as the mechanics of trait solving — into a Prolog-like system of logical inference rules that can then be solved generically with well-known logic-programming techniques. Chalk has two internal implementations of logical inference with their own strengths and weaknesses: the SLG solver (which uses an approach based on Prolog tabling) and the recursive solver, which more closely matches the operation of Rust's original trait solver. The SLG solver can handle some kinds of loops that the recursive solver cannot.

Rust developers determined that Chalk wasn't a good fit for the Rust compiler, however. One major concern was with maintaining the usefulness of error messages; the current implementation produces good error messages for simple mistakes, but Chalk's error messages have lagged behind. In 2023, the project decided to rewrite the trait solver within the compiler, using lessons from the first implementation and from Chalk.

The rewrite, called the next-generation trait solver, makes use of caching to both speed up trait solving and to defeat cycles. When called upon to start finding a trait implementation for a type, it starts by assuming that such an implementation will be found, and making a spot for it in the cache — it is marked as provisionally true, but cannot yet be fully relied on. Then the solver follows the chain of logical inferences in much the same manner as the current solver, with the exception that it looks results up in the cache when possible. When it derives a new piece of information, that is added to the cache; if deriving the new information relied on any provisional cache entries, the new entry is also marked as provisional.

If the trait solver ever reaches a point where the only remaining logical obligations refer to provisionally true cache entries, the entries are upgraded to actually true and can be referenced by other type-checking operations. On the other hand, if it doesn't reach such a point, the provisional cache entries are invalidated, and that branch of the computation is considered failed. It will either fail entirely (and show an error to the user), or continue trying some alternative potential solution.

In the case of the example above, when the new solver reached the state of needing to prove that Link<MyWrapper> implements Debug for the second time, it would see that the trait implementation had been cached as provisionally true by the previous exploration and (lacking other logical obligations) conclude that Link<MyWrapper> really does implement Debug.

Currently, the next-generation trait solver only extends this notion of provisional cache entries to a limited number of built-in traits, such as Send, but the plan is to eventually enable the behavior for all traits. The Rust developers are fairly sure that enabling this feature will just allow some code (like the above example) that doesn't currently compile to work, but since this is a logically intricate piece of code on which the correctness of the type system depends, they don't want to be too hasty. The next-generation trait solver itself is currently marked experimental for much the same reason.

One other interesting aspect of the next-generation trait solver is canonicalization. Since its design relies heavily on caching, the more types that can be cached, the faster compilation using the new trait solver will be. For that reason, logical obligations encountered in the course of trait solving are rewritten into a format that removes as many type variables and intermediate results as possible. This also has the nice effect of making it easy to reconstruct proof trees explaining how the compiler reached a particular answer. These are used to create more detailed error messages by explaining which options were tried and why they didn't work. Since the proof trees don't need to be generated unless an error message needs to be shown, being able to reconstruct them from the cache avoids the overhead of constructing them for code that does compile.

Trying it out

The next-generation trait solver is already used in stable Rust for coherence checking (that is, checking that trait implementations do not overlap), but is not yet used for general trait solving. In the nightly release of the compiler, the -Znext-solver=globally flag uses the next-generation trait solver for all trait-related type-system computations. The Rust developers have already used Crater to check that the flag does not cause compile errors for crates publicly released on crates.io, but would like to know if the flag causes problems for anyone's code prior to stabilization.

There are currently 76 open bugs related to the new trait solver, and 78 closed ones. The feature has made more progress than that suggests, however, since several of the closed bugs are rather large, and the remaining bugs are mostly internal compiler errors or performance problems that the Rust developers would like to see addressed. The new trait solver is intended to be both faster and more maintainable than the previous implementation, but whether that promise bears out remains to be seen. In either case, Rust developers may soon have the option to write more-complicated self-referential trait-based interfaces.

Comments (18 posted)

Pandoc: a workhorse for document conversion

April 1, 2026

This article was contributed by Lee Phillips

Pandoc is a document-conversion program that can translate among a myriad of formats, including LaTeX, HTML, Office Open XML (docx), plain text, and Markdown. It is also extensible by writing Lua filters that can manipulate the document structure and perform arbitrary computations. Pandoc has appeared in various LWN articles over the years, such as my look at Typst and at the importance of free software to science in 2025, but we have missed providing an overview of the tool. The February release of Pandoc 3.9, which comes with the ability to compile the program to WebAssembly (Wasm), allowing Pandoc to run in web browsers, will likely also be of interest.

Problems solved

Writers, scholars, scientists, and many others often need to create versions of their documents in various formats. For example, a mathematician, after preparing a paper formatted with LaTeX, may want to generate an HTML version to share on the web, and later create a set of slides for a conference. Sections of the paper might be useful in a grant application, but the funding agency might require a Microsoft Word format. Creating these various incarnations would seem to require a great deal of redundant work, especially if the paper contains equations, figures, and references.

This is the problem that Pandoc was created to solve. Using Pandoc, our hypothetical mathematician can write the paper once and have it quickly and automatically converted to any of over 40 output formats. Others may simply have a document in some format and want it translated to a different format to use it in some other way. Pandoc also lurks behind other projects and online services that require document conversion, such as the popular Quarto "scientific and technical publishing system". The list of Pandoc input and output formats can be found in its README file.

A program that directly translated among N formats would have to incorporate N2 translators. Instead of implementing the resulting hundreds of translation routines, Pandoc relies on a modular architecture. It ingests documents using "readers" specialized for each input format, whose job is to translate into Pandoc's internal abstract syntax tree (AST). Output is emitted by "writers" that translate the internal representation into the desired output format.

This strategy turns the N2 problem into a 2N problem. It also makes it easier to enlarge Pandoc's repertoire: a contributor who would like the system to be able to read a new format need only write a Lua program to convert that format into the internal representation, after which Pandoc will be able to translate the format into any of its many outputs. Similarly, a writer module for a new format gives Pandoc the ability to convert any of the document types that it already understands into the new one. (I've simplified the situation somewhat, in that the set of document formats that Pandoc can read is not identical to the set of formats that it can write, but they have a large intersection.)

In practice, the most effective way to start using Pandoc for a new document is to write it in Pandoc's extended dialect of Markdown. This is because the readers for different formats vary in their abilities, but the Markdown reader is fully featured and complete. That variability is necessarily the case, because not every document format can be reliably translated into an AST. For example, LaTeX and Typst can embody arbitrary programs, whose output cannot be determined without running their respective compilers.

If a Markdown document is saved in a file called example.md, this command would translate it into a Typst document:

    pandoc example.md -o example.typ

The output format is inferred from the file extension. To translate it into HTML, a .html extension can be used instead. Another option is to specify the output format with the "-t" flag, for example "-t html".

Pandoc's Markdown dialect incorporates additions to the original specification that make it more suitable for expressing complex documents, while retaining the signature advantage of being pleasant to parse by eye. In addition to everything in traditional Markdown, it can handle ordered lists with letters or Roman numerals, task lists, definition lists, various styles of tables, LaTeX mathematics, footnotes, bibliographic citations, and quite a bit more.

Authors can also insert raw markup into the Markdown source, which is passed directly to the output file, bypassing Pandoc processing. Pandoc supplies syntax for raw markup that allows different fragments to be inserted in the output, depending on the format. For example, this code listing renders the name of Donald Knuth's typesetting engine in plain text, HTML, and (La)TeX; the appropriate fragment is used depending on the output format passed to Pandoc on the command line (or implied by the output file extension).

   The `TeX`{=plain}
     `T<span style="position:relative;top:0.2em">E</span>X`{=html}
     `\TeX\ `{=latex} typesetting system.  

The figure below shows all three versions, as they appear in a terminal, a web browser, and a PDF viewer, respectively. The PDF version was generated by LuaLaTeX processing the LaTeX output.

[Output from raw markup]

Citations

Pandoc has sophisticated support for citations and bibliographies. This feature is what makes it possible for scientists and scholars to write in Pandoc's extended Markdown rather than directly in LaTeX. Pandoc borrows the relevant syntax and mechanisms from LaTeX, using similar markup to indicate citations, the same BibTeX text-file databases of references, and the same standard Citation Style Language (CSL) bibliography style files.

As a simple example of how this works, here is a fragment of a document written in Pandoc's Markdown:

   Free software [@fsfs] is important for physics [@heisenbergBeyond] and
   other sciences.  

The bits inside the square brackets indicate references to resources defined in a BibTeX database. This a text file containing the bibliographic data for papers, books, websites, and anything else that an author might want to refer to. Here is the relevant part of the database for this document:

   @article{fsfs,
    author = {Lee Phillips},
    journal = {LWN},
    month = {June},
    title = {{T}he {I}mportance of {F}ree {S}oftware to {S}cience},
    url = {https://lwn.net/Articles/1023299/},
    year = {2025}
   }
   
   @book{heisenbergBeyond,
    address = {New York},
    author = {Werner Heisenberg},
    isbn = {06-131622-9},
    publisher = {Harper {and} Row},
    title = {{P}hysics and {B}eyond},
    url = {https://www.amazon.com/Physics-Beyond-Encounters-Conversations-Perspectives/dp/0061316229/},
    year = {1971}
   }  

The fragment can then be processed with Pandoc to create output, in any of the formats that it supports, with references and a bibliography. The command for doing so is:

   pandoc --citeproc --bibliography=refs.bib refsExample.md -o refsExample.html

In this command "--citeproc" flag tells Pandoc to use its citation machinery and "--bibliography=" points it to the BibTeX file. The input file is refsExample.md, the file extension indicating Markdown. The output will be in HTML5 because of the extension for the output file. The result will be formatted using the default bibliography style, which happens to be the Chicago Manual of Style author-date format. Different styles can be used by downloading the desired CSL file (a good source is the Zotero style repository)

The figure below shows how the result appears in my web browser, first using the default bibliography style and, below that, using a numerical superscript style. The Pandoc command line is the same in both cases; the only change was the installation of a different CSL file in the default location in the filesystem (another option is to use a "--csl" flag to point Pandoc at the desired file).

[Citations]

In a real project the bibliography would be set off from the main text by a header and, probably, a different font, both of which can be conveniently added by Pandoc.

We can even have plain text output with citations, for those occasions when our emails or website comments require maximum pedantry. Here's the output of the same command with the "-t plain" flag added to request plain text:

   Free software¹ is important for physics² and other sciences.
   
   1. Phillips, Lee. (2025). The Importance of Free Software to Science.
   LWN. https://lwn.net/Articles/1023299/
   
   2. Heisenberg, Werner. (1971). Physics and Beyond. Harper and Row. New
   York. ISBN 06-131622-9.

Because it is a command-line program, Pandoc can be flexibly incorporated into various workflows and used in concert with other tools. I have a keyboard shortcut defined in my editor that processes any selected text through Pandoc, using "--citeproc", and places the plain-text output in the clipboard, ready for pasting into emails or comment boxes.

Pandoc filters

A Pandoc filter is a Lua program that acts directly upon the AST. Filters can make changes to document elements and can perform arbitrary computations based on the contents of those elements. For example, a user might create a filter to number all of the paragraphs in a report, or to print a timestamp under an article's title.

There is also an older type of filter that manipulates a JSON serialization of the AST. These filters can be written in any language, but they have extra dependencies and are slower, as they require serialization and deserialization steps. The current recommendation is to write filters in Lua.

Using Lua filters involves no dependencies, as Pandoc has a Lua interpreter built in. In fact, entering "pandoc lua" in the terminal opens a standard Lua read-eval-print loop (REPL).

Here's an example of a simple filter that changes all underlined elements to Strong elements, which are rendered in most output formats as boldface:

   function Underline(elem)
       return pandoc.Strong(elem.content)
   end

To apply this filter, the program can be invoked with the argument "--lua-filter filter.lua" if filter.lua in the current directory contains the code above.

The function doesn't make much sense outside of the Pandoc context, but filters have access to an API that, somewhat magically, turns function names into routines that walk the AST and process nodes matching the name of the function. Another example is a filter that I wrote that allows me to input equations using the more concise Typst math syntax, rather than LaTeX, even when I need to produce a LaTeX document.

Filters are a powerful means to bend Pandoc to serve nearly any document-processing task, limited only by the imagination and patience of the author/programmer. Other potential applications might be to retrieve information from the Internet to insert into documents, to invoke external programs to create illustrations, or to assemble outlines.

Custom readers and writers

Although Pandoc can handle an impressive variety of document formats, it would not make sense to include every highly specialized or ad hoc markup system in existence. For more arcane applications, Pandoc provides the ability to create custom readers and custom writers. A custom reader is a Lua program that parses input text and translates it into Pandoc's AST; a writer does the reverse. To make this more convenient, Pandoc includes Lua's LPeg parsing library.

Some examples of custom readers are pandoc-fountain, which ingests screenplays written using Fountain markup, the IDML Pandoc reader that understands the markup language used in Adobe InDesign projects, and Lean.lua that can handle Lean files. Interesting custom writers include Pandoc Terminal Writer for colorful pretty-printing on the terminal, Pandoc to PreTeXt that creates markup in the PreTeXt format, which is a structural markup language for textbooks and papers, and a custom writer that emits the specialized format used in a discussion forum.

Changes for 3.9

Pandoc 3.9 was released in early February. The most prominent new feature is the ability to compile Pandoc to Wasm, allowing it to run entirely in a web browser. The project has provided an example page that allows users to do general document conversions via a web form. Pandoc in the browser leads to some interesting possibilities. For example, it should be practical to construct pages that accept user content in nearly any markup format, either in comment boxes or as wiki-style editable text, and convert it in realtime to valid HTML5 for inclusion in the page. Another possibility might be educational sites that, for instance, teach Typst or LaTeX with live feedback.

The new release brings with it dozens of small improvements and bug fixes. Most of these are technical minutiae having to do with corner cases, layout subtleties, or obscure markup formats.

There are two enhancements that may be of wider interest. One is wider support for specifying PDF standards (PDF/A, etc.), as long as LuaLaTeX is used to produce the output. The other is a significant improvement to citation handling that allows the author to reset citation history when needed, typically at the beginnings of book chapters. Standard practice is to abbreviate citations after the first mention (omitting publication details, etc.). But at the beginning of a new chapter, there may be a desire to see the full citation again.

Installations and origins

Pandoc is a free program, released under the GPLv2 (or later). It is available in the package repositories of most Linux distributions, but those versions may be behind the recent release. To get the latest release, the source, as well as binaries for Wasm, Windows, macOS, and Linux for both major architectures, are available on the web site. Those who want to use Pandoc to create PDFs must also have LaTeX, Typst, or another program that can accept one of Pandoc's output formats for conversion to PDF, installed. Pandoc will use LaTeX by default, but the user can specify another program.

The Pandoc documentation is quite good, and is all I've ever needed to support my extensive and daily use of the system.

Pandoc was created by John MacFarlane, a professor of philosophy at UC Berkeley specializing in the philosophy of language. The project is distinguished by being one of the few widely used Haskell programs. In an interview from 2023 its creator said:

I think Pandoc is, in general, written in fairly simple Haskell. I don't use too many complicated things in there. And that's partly due to the fact that I wasn't a very sophisticated Haskeller when I started, and I'm still not that much more sophisticated now.

Conclusions

Pandoc is indispensable for anyone who needs to create different kinds of written documents. With Pandoc, I can write for a publication that insists on Word documents without ever touching a GUI program, turn a set of notes into a web page, or have a book's illustrations automatically generated. Pandoc is fast and never, in my experience, fails to do exactly what it is supposed to do.

The program is actively developed and continually improved in its GitHub repository. Contributions are welcomed, and those interested in helping are not necessarily excluded by a lack of intimacy with Haskell. As MacFarlane remarked in the interview: "it's possible for people who are generally familiar with computer languages to look at some Pandoc code sometimes, even if they don't know Haskell, and figure out what might be needed".

Pandoc is most powerful as a command-line tool, where it can be incorporated into scripts and adapted to various document-processing pipelines. However, its new ability to be embedded in web pages is an interesting development that may lead to a wider variety of uses and, perhaps as a secondary effect, to an expanded interest in Haskell.

Comments (11 posted)

Page editor: Joe Brockmeier

Brief items

Security

Rspamd version 4.0.0 released

Version 4.0.0 of the Rspamd spam-filtering system has been released. Notable new features include HTML fuzzy phishing detection, support for up to eight flags with fuzzy hashes, and more. See the changelog for more on improvements, breaking changes, and bug fixes.

Comments (none posted)

The telnyx packages on PyPI have been compromised

The SafeDep blog reports that compromised versions of the telnyx package have been found in the PyPI repository:

Two versions of telnyx (4.87.1 and 4.87.2) published to PyPI on March 27, 2026 contain malicious code injected into telnyx/_client.py. The telnyx package averages over 1 million downloads per month (~30,000/day), making this a high-impact supply chain compromise. The payload downloads a second-stage binary hidden inside WAV audio files from a remote server, then either drops a persistent executable on Windows or harvests credentials on Linux/macOS.

Comments (5 posted)

Vulnerability Research Is Cooked (sockpuppet.org)

There is a blog post on sockpuppet.org arguing that we are not prepared for the upcoming flood of high-quality, LLM-generated vulnerability reports and exploits.

Now consider the poor open source developers who, for the last 18 months, have complained about a torrent of slop vulnerability reports. I'd had mixed sympathies, but the complaints were at least empirically correct. That could change real fast. The new models find real stuff. Forget the slop; will projects be able to keep up with a steady feed of verified, reproducible, reliably-exploitable sev:hi vulnerabilities? That's what's coming down the pipe.

Everything is up in the air. The industry is sold on memory-safe software, but the shift is slow going. We've bought time with sandboxing and attack surface restriction. How well will these countermeasures hold up? A 4 layer system of sandboxes, kernels, hypervisors, and IPC schemes are, to an agent, an iterated version of the same problem. Agents will generate full-chain exploits, and they will do so soon.

Meanwhile, no defense looks flimsier now than closed source code. Reversing was already mostly a speed-bump even for entry-level teams, who lift binaries into IR or decompile them all the way back to source. Agents can do this too, but they can also reason directly from assembly. If you want a problem better suited to LLMs than bug hunting, program translation is a good place to start.

Comments (35 posted)

Kernel development

Kernel release status

The current development kernel is 7.0-rc6, released on March 29. Linus said:

Anyway, exactly because it's just "more than usual" rather than feeling *worse* than usual, I don't currently feel this merits extending the release, and I still hope that next weekend will be the last rc. But it's just a bit unnerving how this release doesn't want to calm down, so no promises.

This development cycle has brought in 13,648 non-merge commits from a record-setting 2,247 developers, 436 of whom are first-time kernel contributors. The release history looks like:

RCDateCommits
v7.0-rc1 2026-02-2212468 12468
v7.0-rc2 2026-03-01434 434
v7.0-rc3 2026-03-08537 537
v7.0-rc4 2026-03-15544 544
v7.0-rc5 2026-03-22391 391
v7.0-rc6 2026-03-29517 517

See the (subscriber-only) KSDB 7.0 page for lots more information.

Stable updates: 6.12.79 was released on March 27 with a single fix for a LoongArch build regression.

The 6.19.11, 6.18.21, 6.12.80, and 6.6.131 updates are in the review process; they are due on April 2.

Comments (none posted)

Quotes of the week

I prefer someone trying to use their own words to compose a change log and actually learn something on the way over some AI slop that reads nicer any day. Often, when you write a changelog you actually realize which corner cases you might be missing, that the design might be overly complicated, that, maybe, the reasoning or motivation is bad etc. It takes time but you actually learn something and are forced to think (crazy, right?).

The same is particularly true when it comes to writing documentation.

David Hildenbrand

Note: setting a birth date that makes the caller appear older than 150 years is rejected with EINVAL, as the kernel does not support vampires or other immortal entities at this time. Patches to add undead process support are welcome but will require a separate Kconfig option.
Christian Brauner

Comments (2 posted)

Distributions

The forge is our new home (Fedora Community Blog)

Tomáš Hrčka has announced that the Forgejo-based Fedora Forge is now a fully operational collaborative-development platform; it is ready for use by the larger Fedora community, which means the homegrown Pagure platform's days are numbered:

While pagure.io has been a vital part of our community for many years, the time has come to retire our homegrown forge and transition to this powerful new tool.

The final cutover is planned for Flock to Fedora 2026. We strongly encourage teams to migrate their projects well before the conference to ensure a smooth transition. The pagure.io migration is only the first step in a broader infrastructure modernization effort. By the 2027 Fedora 46 release, we plan to retire all remaining Pagure instances across the project, including the package source repositories on src.fedoraproject.org. Getting familiar with Fedora Forge now will help ensure your team is ready as the rest of the Fedora ecosystem transitions.

There is a migration guide for Fedora community members that own projects hosted on Pagure and need to move to the new forge.

Comments (7 posted)

SystemRescue 13.00 released

SystemRescue 13.00 has been released. The SystemRescue distribution is a live boot system-rescue toolkit, based on Arch Linux, for repairing systems in the event of a crash. This release includes the 6.18.20 LTS kernel, updates bcachefs tools and kernel module to 1.37.3, and many upgraded packages. See the step-by-step guide for instructions on performing common operations such as recovering files, creating disk clones, and resetting lost passwords.

Comments (3 posted)

Distributions quote of the week

The reason we advise against deleting and recreating tags is simply that we think the existence of multiple different signed tags of the same name, referring to different contents, is confusing and wrong, for both computers and humans.

It's all very well deleting and replacing the tag on Salsa, but anyone who fetches in between will get the old tag. After that, their git won't usually update it to the new one. So some unknown set of users and co-developers (which I guess you are hoping is empty) has wrong information about what your upload was. Wrong information with your PGP signature on it!

IMO such a mess is not worth it, just to make things *look* neat.

But if you want to do things that way we're not stopping you. You and your collaborators and users get to keep all of the pieces.

Ian Jackson

Comments (none posted)

Development

Servo 0.0.6 released

Version 0.0.6 of the Rust-based Servo web browser rendering engine has been released. This release boasts a long list of new features, performance enhancements, improvements, and bug fixes. Some of the notable changes include layout performance improvements, a servo:config page for setting any preference, and developer tools enhancements.

Comments (none posted)

Development quote of the week

"By Wednesday morning, Anthropic representatives had used a copyright takedown request to force the removal of more than 8,000 copies and adaptations of the raw Claude Code instructions—known as source code—that developers had shared on programming platform GitHub."

Because if there's one thing GenAI companies absolutely don't take lightly, it's copyright.

Jens Ohlig commenting on a quote from a Wall Street Journal article.

Comments (8 posted)

Miscellaneous

Turbulence at The Document Foundation

Michael Meeks has posted an angry missive about changes at The Document Foundation. What has really happened is not entirely clear, but it seems to involve, at a minimum, the forced removal of all Collabora staff from the foundation. There has been a set of "thank you" notes to the people involved posted in the foundation's forums. The Document Foundation's decision to restart LibreOffice Online almost certainly plays into this as well.

Details are fuzzy at best; we will be working at providing a clearer picture, but that will take some time.

Comments (22 posted)

Page editor: Daroc Alden

Announcements

Newsletters

Distributions and system administration

Development

Meeting minutes

Calls for Presentations

CFP Deadlines: April 2, 2026 to June 1, 2026

The following listing of CFP deadlines is taken from the LWN.net CFP Calendar.

DeadlineEvent Dates EventLocation
April 7 August 8
August 9
UbuCon Asia 2026 @ COSCUP Taipei, Taiwan
April 15 May 4
May 11
MiniDebConf Hamburg 2026 Hamburg, Germany
April 20 July 13
July 19
DebCamp 26 Santa Fe, Argentina
April 23 October 5
October 7
Linux Plumbers Conference 2026 Prague, Czechia
April 30 September 29
September 30
devopsdays Berlin 2026 Berlin, Germany
May 25 July 20
July 25
DebConf 26 Santa Fe, Argentina
May 31 October 1 Open Tech Day | Software-defined Storage Nuremberg, Germany

If the CFP deadline for your event does not appear here, please tell us about it.

Upcoming Events

Events: April 2, 2026 to June 1, 2026

The following event listing is taken from the LWN.net Calendar.

Date(s)EventLocation
April 10
April 11
Grazer Linuxtage Graz, Austria
April 20
April 21
SambaXP Göttingen, Germany
April 23 OpenSUSE Open Developers Summit Prague, Czech Republic
April 25
April 26
Sesja Linuksowa (Linux Session) Wrocław, Poland
April 27
April 28
foss-north Gothenburg, Sweden
April 28
April 29
stackconf 2026 Munich, Germany
April 29
May 1
Linaro Connect Madrid 2026 Madrid, Spain
May 2 22nd Linux Infotag Augsburg Augsburg, Germany
May 4
May 6
Linux Storage, Filesystem, Memory Management and BPF Summit Zagreb, Croatia
May 4
May 11
MiniDebConf Hamburg 2026 Hamburg, Germany
May 15
May 17
PyCon US Long Beach, California, US
May 16
May 17
Lomiri Tech Meeting Tilburg, The Netherlands
May 18
May 20
Open Source Summit North America Minneapolis, Minnesota, US
May 18
May 23
RustWeek 2026 Utrecht, Netherlands
May 21
May 22
Linux Security Summit North America Minneapolis, Minnesota, US
May 23
May 24
Curl up Prague, Czechia
May 26 Media Summit Nice, France
May 27
May 28
Embedded Recipes Nice, France
May 29 Yocto Project Developer Day Nice, France
May 29 libcamera workshop Nice, France
May 30
May 31
Journées du Logiciel Libre 2026 Lyon, France

If your event does not appear here, please tell us about it.

Security updates

Alert summary March 26, 2026 to April 1, 2026

Dist. ID Release Package Date
AlmaLinux ALSA-2026:5513 8 389-ds:1.4 2026-03-26
AlmaLinux ALSA-2026:5931 10 firefox 2026-03-30
AlmaLinux ALSA-2026:5932 8 firefox 2026-03-30
AlmaLinux ALSA-2026:5930 9 firefox 2026-03-30
AlmaLinux ALSA-2026:5939 10 freerdp 2026-03-27
AlmaLinux ALSA-2026:6004 9 freerdp 2026-04-01
AlmaLinux ALSA-2026:5585 8 gnutls 2026-03-26
AlmaLinux ALSA-2026:5941 10 golang 2026-03-27
AlmaLinux ALSA-2026:5942 9 golang 2026-03-27
AlmaLinux ALSA-2026:6037 8 kernel 2026-03-30
AlmaLinux ALSA-2026:6036 8 kernel-rt 2026-03-30
AlmaLinux ALSA-2026:6266 9 libxslt 2026-04-01
AlmaLinux ALSA-2026:5580 8 mysql:8.0 2026-03-26
AlmaLinux ALSA-2026:5640 9 mysql:8.4 2026-03-26
AlmaLinux ALSA-2026:5913 10 ncurses 2026-03-27
AlmaLinux ALSA-2026:5599 9 nginx 2026-03-26
AlmaLinux ALSA-2026:5581 8 nginx:1.24 2026-03-26
AlmaLinux ALSA-2026:5587 8 opencryptoki 2026-03-26
AlmaLinux ALSA-2026:5603 9 opencryptoki 2026-03-26
AlmaLinux ALSA-2026:5588 8 python3 2026-03-26
AlmaLinux ALSA-2026:6281 8 python3.11 2026-04-01
AlmaLinux ALSA-2026:6283 8 python3.12 2026-04-01
AlmaLinux ALSA-2026:6285 9 python3.12 2026-04-01
AlmaLinux ALSA-2026:5602 9 vim 2026-03-26
AlmaLinux ALSA-2026:5578 8 virt:rhel and virt-devel:rhel 2026-03-26
Debian DLA-4515-1 LTS asterisk 2026-03-30
Debian DLA-4509-1 LTS awstats 2026-03-25
Debian DSA-6181-1 stable bind9 2026-03-27
Debian DLA-4510-1 LTS firefox-esr 2026-03-26
Debian DSA-6178-1 stable firefox-esr 2026-03-25
Debian DLA-4514-1 LTS gst-plugins-base1.0 2026-03-29
Debian DLA-4516-1 LTS gst-plugins-ugly1.0 2026-03-30
Debian DLA-4513-1 LTS gvfs 2026-03-28
Debian DSA-6184-1 stable incus 2026-03-29
Debian DSA-6189-1 stable libpng1.6 2026-03-31
Debian DSA-6182-1 stable libxml-parser-perl 2026-03-28
Debian DSA-6188-1 stable lxd 2026-03-31
Debian DLA-4519-1 LTS netty 2026-03-31
Debian DSA-6183-1 stable nodejs 2026-03-29
Debian DLA-4508-1 LTS nss 2026-03-25
Debian DSA-6186-1 stable php-phpseclib 2026-03-29
Debian DSA-6187-1 stable php-phpseclib3 2026-03-29
Debian DLA-4518-1 LTS phpseclib 2026-03-30
Debian DSA-6185-1 stable phpseclib 2026-03-29
Debian DLA-4520-1 LTS python-tornado 2026-04-01
Debian DLA-4517-1 LTS roundcube 2026-03-30
Debian DSA-6180-1 stable ruby-rack 2026-03-26
Debian DLA-4512-1 LTS strongswan 2026-03-27
Debian DLA-4511-1 LTS thunderbird 2026-03-26
Debian DSA-6179-1 stable thunderbird 2026-03-26
Fedora FEDORA-2026-1fc0d39acd F42 bcftools 2026-03-28
Fedora FEDORA-2026-3b06345bf2 F43 bcftools 2026-03-28
Fedora FEDORA-2026-cb321bebb5 F44 bcftools 2026-03-28
Fedora FEDORA-2026-b2ec0d8a47 F43 bind 2026-03-29
Fedora FEDORA-2026-19d899e92d F44 bind 2026-03-31
Fedora FEDORA-2026-b2ec0d8a47 F43 bind-dyndb-ldap 2026-03-29
Fedora FEDORA-2026-19d899e92d F44 bind-dyndb-ldap 2026-03-31
Fedora FEDORA-2026-cc466cfb57 F42 chromium 2026-03-28
Fedora FEDORA-2026-ad5b2b6b68 F43 chromium 2026-03-29
Fedora FEDORA-2026-4d42fffb2b F44 chromium 2026-03-26
Fedora FEDORA-2026-1269948465 F43 chunkah 2026-04-01
Fedora FEDORA-2026-04a531cece F42 cpp-httplib 2026-04-01
Fedora FEDORA-2026-e76feaf213 F43 cpp-httplib 2026-04-01
Fedora FEDORA-2026-03599f0b32 F44 cpp-httplib 2026-03-31
Fedora FEDORA-2026-48e73ed6b8 F42 dotnet10.0 2026-03-28
Fedora FEDORA-2026-956fc306c4 F44 dotnet10.0 2026-03-26
Fedora FEDORA-2026-66c97240f2 F42 dotnet8.0 2026-03-28
Fedora FEDORA-2026-f84afd42df F43 dotnet8.0 2026-03-31
Fedora FEDORA-2026-702a03ac4d F44 dotnet8.0 2026-03-26
Fedora FEDORA-2026-8ae04c01e3 F42 dotnet9.0 2026-03-28
Fedora FEDORA-2026-22e517fe60 F43 dotnet9.0 2026-03-31
Fedora FEDORA-2026-624e30e8a7 F44 dotnet9.0 2026-03-26
Fedora FEDORA-2026-49237e1ced F42 firefox 2026-03-31
Fedora FEDORA-2026-a026a1b0c5 F42 firefox 2026-04-01
Fedora FEDORA-2026-3dbd8c4b89 F42 fontforge 2026-03-27
Fedora FEDORA-2026-4f7402837e F43 fontforge 2026-03-27
Fedora FEDORA-2026-f6fe509803 F43 freerdp 2026-04-01
Fedora FEDORA-2026-2c1ab5b23b F44 freerdp 2026-03-26
Fedora FEDORA-2026-36ea367760 F44 freerdp 2026-03-31
Fedora FEDORA-2026-758ce76ef6 F44 giflib 2026-03-28
Fedora FEDORA-2026-e77ad9d792 F43 gst-devtools 2026-04-01
Fedora FEDORA-2026-e77ad9d792 F43 gst-editing-services 2026-04-01
Fedora FEDORA-2026-e77ad9d792 F43 gstreamer1 2026-04-01
Fedora FEDORA-2026-e77ad9d792 F43 gstreamer1-doc 2026-04-01
Fedora FEDORA-2026-e77ad9d792 F43 gstreamer1-plugin-libav 2026-04-01
Fedora FEDORA-2026-e77ad9d792 F43 gstreamer1-plugins-bad-free 2026-04-01
Fedora FEDORA-2026-e77ad9d792 F43 gstreamer1-plugins-base 2026-04-01
Fedora FEDORA-2026-e77ad9d792 F43 gstreamer1-plugins-good 2026-04-01
Fedora FEDORA-2026-e77ad9d792 F43 gstreamer1-plugins-ugly-free 2026-04-01
Fedora FEDORA-2026-e77ad9d792 F43 gstreamer1-rtsp-server 2026-04-01
Fedora FEDORA-2026-e77ad9d792 F43 gstreamer1-vaapi 2026-04-01
Fedora FEDORA-2026-c3c02ffe75 F43 headscale 2026-03-27
Fedora FEDORA-2026-76033f35ea F44 headscale 2026-03-27
Fedora FEDORA-2026-1fc0d39acd F42 htslib 2026-03-28
Fedora FEDORA-2026-3b06345bf2 F43 htslib 2026-03-28
Fedora FEDORA-2026-cb321bebb5 F44 htslib 2026-03-28
Fedora FEDORA-2026-62cea4650e F42 insight 2026-04-01
Fedora FEDORA-2026-0b2e9c67ef F43 insight 2026-04-01
Fedora FEDORA-2026-d79ba951dd F44 insight 2026-03-31
Fedora FEDORA-2026-9d5b9f45ec F43 kryoptic 2026-03-27
Fedora FEDORA-2026-f9d2152328 F43 libopenmpt 2026-03-27
Fedora FEDORA-2026-b58c5b3cc0 F44 libopenmpt 2026-03-27
Fedora FEDORA-2026-55dabf3975 F44 libsoup3 2026-03-30
Fedora FEDORA-2026-48a302496d F44 libtasn1 2026-03-30
Fedora FEDORA-2026-23bb71ea52 F42 maturin 2026-03-29
Fedora FEDORA-2026-d18cf572b8 F43 maturin 2026-03-28
Fedora FEDORA-2026-e22a7dbf2d F44 maturin 2026-03-28
Fedora FEDORA-2026-1cbd107c34 F42 mingw-expat 2026-03-30
Fedora FEDORA-2026-e70c1919fe F43 mingw-expat 2026-03-30
Fedora FEDORA-2026-cf814a1a06 F44 mingw-expat 2026-03-30
Fedora FEDORA-2026-0e9d55a05c F44 mingw-freetype 2026-03-30
Fedora FEDORA-2026-c5273647fa F42 mongo-c-driver 2026-03-28
Fedora FEDORA-2026-cc129df978 F43 mongo-c-driver 2026-03-28
Fedora FEDORA-2026-508009213f F44 mongo-c-driver 2026-03-28
Fedora FEDORA-2026-2e5626418f F42 musescore 2026-03-31
Fedora FEDORA-2026-c571483404 F43 musescore 2026-03-31
Fedora FEDORA-2026-49237e1ced F42 nss 2026-03-31
Fedora FEDORA-2026-367d9a0b61 F44 nss 2026-03-31
Fedora FEDORA-2026-2dc4882154 F42 ntpd-rs 2026-03-31
Fedora FEDORA-2026-cbe2315bad F43 ntpd-rs 2026-03-31
Fedora FEDORA-2026-eb0777262e F44 ntpd-rs 2026-03-31
Fedora FEDORA-2026-b7182d65b7 F43 perl-XML-Parser 2026-03-28
Fedora FEDORA-2026-dcb80f8e23 F44 perl-XML-Parser 2026-03-28
Fedora FEDORA-2026-d226775800 F42 perl-YAML-Syck 2026-03-31
Fedora FEDORA-2026-3572f7e01c F43 perl-YAML-Syck 2026-03-31
Fedora FEDORA-2026-a8d89d8ae2 F44 perl-YAML-Syck 2026-03-31
Fedora FEDORA-2026-bfeb46516b F42 php-phpseclib 2026-03-28
Fedora FEDORA-2026-d1feefa819 F43 php-phpseclib 2026-03-28
Fedora FEDORA-2026-65fdd15133 F42 php-phpseclib3 2026-03-30
Fedora FEDORA-2026-b7d9416ec4 F43 php-phpseclib3 2026-03-30
Fedora FEDORA-2026-054c0e22d1 F44 polkit 2026-03-31
Fedora FEDORA-2026-9d5b9f45ec F43 pyOpenSSL 2026-03-27
Fedora FEDORA-2026-5697f4e025 F44 pyOpenSSL 2026-03-31
Fedora FEDORA-2026-6c4a7cd1b1 F43 pypy 2026-03-29
Fedora FEDORA-2026-496bf1e0dd F44 pypy 2026-03-29
Fedora FEDORA-2026-98502d7938 F43 pypy3.10 2026-03-29
Fedora FEDORA-2026-55dd4da86b F44 pypy3.10 2026-03-29
Fedora FEDORA-2026-85a7950dd4 F43 pypy3.11 2026-03-30
Fedora FEDORA-2026-8199b7452a F44 pypy3.11 2026-03-30
Fedora FEDORA-2026-9d5b9f45ec F43 python-cryptography 2026-03-27
Fedora FEDORA-2026-6c010af7be F43 python-cryptography 2026-03-30
Fedora FEDORA-2026-2423902e8b F44 python-cryptography 2026-03-30
Fedora FEDORA-2026-23bb71ea52 F42 python-fastar 2026-03-29
Fedora FEDORA-2026-d18cf572b8 F43 python-fastar 2026-03-28
Fedora FEDORA-2026-e22a7dbf2d F44 python-fastar 2026-03-28
Fedora FEDORA-2026-e77ad9d792 F43 python-gstreamer1 2026-04-01
Fedora FEDORA-2026-516db080b7 F43 python-ply 2026-03-29
Fedora FEDORA-2026-c081ac890b F44 python-ply 2026-03-29
Fedora FEDORA-2026-1594a9755b F44 python-pycparser 2026-03-30
Fedora FEDORA-2026-23bb71ea52 F42 python-uv-build 2026-03-29
Fedora FEDORA-2026-d18cf572b8 F43 python-uv-build 2026-03-28
Fedora FEDORA-2026-b8b59dcf44 F44 python-uv-build 2026-03-28
Fedora FEDORA-2026-e22a7dbf2d F44 python-uv-build 2026-03-28
Fedora FEDORA-2026-a0b1d4b9fa F42 python3.11 2026-03-29
Fedora FEDORA-2026-5dd28d8058 F43 python3.11 2026-03-29
Fedora FEDORA-2026-5e63b7a761 F44 python3.11 2026-03-29
Fedora FEDORA-2026-304f76c660 F43 python3.12 2026-03-28
Fedora FEDORA-2026-9c8d7e5c9a F44 python3.12 2026-03-31
Fedora FEDORA-2026-f373d5f528 F43 python3.13 2026-03-29
Fedora FEDORA-2026-742bf8c12d F44 python3.13 2026-03-29
Fedora FEDORA-2026-3d7ea476e1 F44 python3.14 2026-03-31
Fedora FEDORA-2026-156169f944 F42 python3.6 2026-03-29
Fedora FEDORA-2026-1a816eeca2 F43 python3.6 2026-03-29
Fedora FEDORA-2026-b79ae5877b F44 python3.6 2026-03-29
Fedora FEDORA-2026-c283cce7fd F42 roundcubemail 2026-03-28
Fedora FEDORA-2026-2decd38070 F43 roundcubemail 2026-03-28
Fedora FEDORA-2026-9b0f520716 F44 roundcubemail 2026-03-28
Fedora FEDORA-2026-8c07fcde49 F43 rubygem-json 2026-03-27
Fedora FEDORA-2026-3a7663d43d F44 rubygem-json 2026-03-28
Fedora FEDORA-2026-99de392ccb F43 rust 2026-04-01
Fedora FEDORA-2026-30b1c7e18a F44 rust 2026-03-31
Fedora FEDORA-2026-b8b59dcf44 F44 rust-ambient-id 2026-03-28
Fedora FEDORA-2026-9d5b9f45ec F43 rust-asn1 2026-03-27
Fedora FEDORA-2026-9d5b9f45ec F43 rust-asn1_derive 2026-03-27
Fedora FEDORA-2026-b8b59dcf44 F44 rust-astral-reqwest-middleware 2026-03-28
Fedora FEDORA-2026-b8b59dcf44 F44 rust-astral-reqwest-retry 2026-03-28
Fedora FEDORA-2026-23bb71ea52 F42 rust-astral-tokio-tar 2026-03-29
Fedora FEDORA-2026-d18cf572b8 F43 rust-astral-tokio-tar 2026-03-28
Fedora FEDORA-2026-e22a7dbf2d F44 rust-astral-tokio-tar 2026-03-28
Fedora FEDORA-2026-b8b59dcf44 F44 rust-astral_async_http_range_reader 2026-03-28
Fedora FEDORA-2026-82783c3c1d F42 rust-cargo-c 2026-03-29
Fedora FEDORA-2026-7624cdcfb6 F43 rust-cargo-c 2026-03-29
Fedora FEDORA-2026-ad73d6fafe F44 rust-cargo-c 2026-03-29
Fedora FEDORA-2026-433d51e09b F42 rust-cargo-rpmstatus 2026-04-01
Fedora FEDORA-2026-e5b9665269 F43 rust-cargo-rpmstatus 2026-03-31
Fedora FEDORA-2026-d7cc8fd693 F44 rust-cargo-rpmstatus 2026-03-31
Fedora FEDORA-2026-1a04e4e1ed F42 rust-cargo-vendor-filterer 2026-04-01
Fedora FEDORA-2026-f0710d7a56 F43 rust-cargo-vendor-filterer 2026-04-01
Fedora FEDORA-2026-8deecdc6c6 F44 rust-cargo-vendor-filterer 2026-03-31
Fedora FEDORA-2026-9d5b9f45ec F43 rust-cryptoki 2026-03-27
Fedora FEDORA-2026-9d5b9f45ec F43 rust-cryptoki-sys 2026-03-27
Fedora FEDORA-2026-1c54435571 F42 rust-ingredients 2026-03-29
Fedora FEDORA-2026-d0a08cfd21 F43 rust-ingredients 2026-03-29
Fedora FEDORA-2026-f5938ebad0 F44 rust-ingredients 2026-03-29
Fedora FEDORA-2026-b8b59dcf44 F44 rust-native-tls 2026-03-28
Fedora FEDORA-2026-23bb71ea52 F42 rust-nix 2026-03-29
Fedora FEDORA-2026-d18cf572b8 F43 rust-nix 2026-03-28
Fedora FEDORA-2026-e22a7dbf2d F44 rust-nix 2026-03-28
Fedora FEDORA-2026-b8b59dcf44 F44 rust-openssl-probe 2026-03-28
Fedora FEDORA-2026-b8b59dcf44 F44 rust-openssl-probe0.1 2026-03-28
Fedora FEDORA-2026-8f1d7b6821 F42 rust-pty-process 2026-03-29
Fedora FEDORA-2026-936a74ccc0 F43 rust-pty-process 2026-03-29
Fedora FEDORA-2026-29e1155702 F44 rust-pty-process 2026-03-29
Fedora FEDORA-2026-b8b59dcf44 F44 rust-reqsign 2026-03-28
Fedora FEDORA-2026-b8b59dcf44 F44 rust-reqsign-aliyun-oss 2026-03-28
Fedora FEDORA-2026-b8b59dcf44 F44 rust-reqsign-aws-v4 2026-03-28
Fedora FEDORA-2026-b8b59dcf44 F44 rust-reqsign-azure-storage 2026-03-28
Fedora FEDORA-2026-b8b59dcf44 F44 rust-reqsign-command-execute-tokio 2026-03-28
Fedora FEDORA-2026-b8b59dcf44 F44 rust-reqsign-core 2026-03-28
Fedora FEDORA-2026-b8b59dcf44 F44 rust-reqsign-file-read-tokio 2026-03-28
Fedora FEDORA-2026-b8b59dcf44 F44 rust-reqsign-google 2026-03-28
Fedora FEDORA-2026-b8b59dcf44 F44 rust-reqsign-http-send-reqwest 2026-03-28
Fedora FEDORA-2026-b8b59dcf44 F44 rust-reqsign-huaweicloud-obs 2026-03-28
Fedora FEDORA-2026-b8b59dcf44 F44 rust-reqsign-tencent-cos 2026-03-28
Fedora FEDORA-2026-dd42661781 F42 rust-resctl-bench 2026-04-01
Fedora FEDORA-2026-d7252cbfc9 F43 rust-resctl-bench 2026-04-01
Fedora FEDORA-2026-12baf239f8 F44 rust-resctl-bench 2026-03-31
Fedora FEDORA-2026-b8b59dcf44 F44 rust-rustls-native-certs 2026-03-28
Fedora FEDORA-2026-27e6e0b664 F44 rust-scx_layered 2026-03-31
Fedora FEDORA-2026-4bf6df19ae F44 rust-scx_rustland 2026-03-31
Fedora FEDORA-2026-2d77e9f2c0 F44 rust-scx_rusty 2026-03-31
Fedora FEDORA-2026-8f1d7b6821 F42 rust-sequoia-chameleon-gnupg 2026-03-29
Fedora FEDORA-2026-936a74ccc0 F43 rust-sequoia-chameleon-gnupg 2026-03-29
Fedora FEDORA-2026-29e1155702 F44 rust-sequoia-chameleon-gnupg 2026-03-29
Fedora FEDORA-2026-23bb71ea52 F42 rust-tar 2026-03-29
Fedora FEDORA-2026-d18cf572b8 F43 rust-tar 2026-03-28
Fedora FEDORA-2026-e22a7dbf2d F44 rust-tar 2026-03-28
Fedora FEDORA-2026-b8b59dcf44 F44 rust-webpki-root-certs 2026-03-28
Fedora FEDORA-2026-9d5b9f45ec F43 rust-wycheproof 2026-03-27
Fedora FEDORA-2026-609bc373aa F42 rustup 2026-03-29
Fedora FEDORA-2026-9defa0fb00 F43 rustup 2026-03-29
Fedora FEDORA-2026-89d4b6644b F44 rustup 2026-03-29
Fedora FEDORA-2026-1fc0d39acd F42 samtools 2026-03-28
Fedora FEDORA-2026-3b06345bf2 F43 samtools 2026-03-28
Fedora FEDORA-2026-cb321bebb5 F44 samtools 2026-03-28
Fedora FEDORA-2026-9e26f48b50 F42 stgit 2026-03-31
Fedora FEDORA-2026-d6b7d7e177 F43 stgit 2026-03-31
Fedora FEDORA-2026-25285d56e4 F44 stgit 2026-03-31
Fedora FEDORA-2026-03583f302f F43 suricata 2026-03-28
Fedora FEDORA-2026-45a7e37b8a F44 suricata 2026-03-28
Fedora FEDORA-2026-23bb71ea52 F42 uv 2026-03-29
Fedora FEDORA-2026-d18cf572b8 F43 uv 2026-03-28
Fedora FEDORA-2026-b8b59dcf44 F44 uv 2026-03-28
Fedora FEDORA-2026-e22a7dbf2d F44 uv 2026-03-28
Fedora FEDORA-2026-a05ac070cd F43 vim 2026-03-27
Fedora FEDORA-2026-a218db2573 F44 vim 2026-03-30
Fedora FEDORA-2026-ff768f8e37 F42 vtk 2026-03-27
Fedora FEDORA-2026-55f82da186 F43 vtk 2026-03-27
Fedora FEDORA-2026-f00460a7d9 F44 webkitgtk 2026-03-31
Fedora FEDORA-2026-71154797a5 F44 wireshark 2026-03-26
Fedora FEDORA-2026-f04da48123 F42 xen 2026-04-01
Fedora FEDORA-2026-f884fd0313 F44 xen 2026-03-31
Mageia MGASA-2026-0069 9 cmake 2026-03-27
Mageia MGASA-2026-0078 9 freeipmi 2026-04-01
Mageia MGASA-2026-0067 9 graphicsmagick 2026-03-25
Mageia MGASA-2026-0070 9 libpng 2026-03-28
Mageia MGASA-2026-0071 9 nodejs 2026-03-28
Mageia MGASA-2026-0074 9 python-openssl 2026-04-01
Mageia MGASA-2026-0079 9 python-ply 2026-04-01
Mageia MGASA-2026-0073 9 python-ujson 2026-03-29
Mageia MGASA-2026-0075 9 ruby-rack 2026-04-01
Mageia MGASA-2026-0072 9 strongswan 2026-03-29
Mageia MGASA-2026-0077 9 vim 2026-04-01
Mageia MGASA-2026-0068 9 xen 2026-03-25
Mageia MGASA-2026-0076 9 zlib 2026-04-01
Oracle ELSA-2026-5931 OL10 firefox 2026-03-31
Oracle ELSA-2026-5932 OL8 firefox 2026-03-31
Oracle ELSA-2026-5930 OL9 firefox 2026-03-31
Oracle ELSA-2026-5939 OL10 freerdp 2026-03-26
Oracle ELSA-2026-4471 OL7 freerdp 2026-03-31
Oracle ELSA-2026-6005 OL8 freerdp 2026-03-31
Oracle ELSA-2026-6004 OL9 freerdp 2026-03-31
Oracle ELSA-2026-5941 OL10 golang 2026-03-26
Oracle ELSA-2026-5942 OL9 golang 2026-03-26
Oracle ELSA-2026-6053 OL10 kernel 2026-03-31
Oracle ELSA-2026-50171 OL8 kernel 2026-03-31
Oracle ELSA-2026-50171 OL9 kernel 2026-03-31
Oracle ELSA-2026-50171 OL9 kernel 2026-03-31
Oracle ELSA-2026-50170 OL9 kernel 2026-03-31
Oracle ELSA-2026-4756 OL7 libpng 2026-03-31
Oracle ELSA-2026-5580 OL8 mysql:8.0 2026-03-26
Oracle ELSA-2026-5640 OL9 mysql:8.4 2026-03-25
Oracle ELSA-2026-5913 OL10 ncurses 2026-03-26
Oracle ELSA-2026-5599 OL9 nginx 2026-03-25
Oracle ELSA-2026-6188 OL9 thunderbird 2026-03-31
Oracle ELSA-2026-50170 uek-kernel 2026-03-31
Oracle ELSA-2026-5578 OL8 virt:ol and virt-devel:ol 2026-03-31
Red Hat RHSA-2026:5941-01 EL10 golang 2026-04-01
Red Hat RHSA-2026:5943-01 EL10.0 golang 2026-04-01
Red Hat RHSA-2026:5942-01 EL9 golang 2026-04-01
Red Hat RHSA-2026:5944-01 EL9.6 golang 2026-04-01
Red Hat RHSA-2026:5852-01 EL10.0 osbuild-composer 2026-03-27
Red Hat RHSA-2026:5853-01 EL8.6 osbuild-composer 2026-03-27
Red Hat RHSA-2026:5167-01 EL10.0 podman 2026-03-26
Red Hat RHSA-2026:5222-01 EL9.4 podman 2026-03-26
Red Hat RHSA-2026:5216-01 EL8.2 python3 2026-03-30
Red Hat RHSA-2026:5219-01 EL9.0 python3.9 2026-03-30
Slackware SSA:2026-084-01 bind 2026-03-25
Slackware SSA:2026-085-02 libpng 2026-03-26
Slackware SSA:2026-084-02 tigervnc 2026-03-25
Slackware SSA:2026-085-01 tigervnc 2026-03-26
SUSE openSUSE-SU-2026:20415-1 oS16.0 389-ds 2026-03-28
SUSE openSUSE-SU-2026:10446-1 TW ImageMagick 2026-03-30
SUSE SUSE-SU-2026:1124-1 SLE15 LibVNCServer 2026-03-27
SUSE SUSE-SU-2026:1008-1 SLE15 SLE-m5.0 SLE-m5.1 SLE-m5.2 SLE-m5.3 SLE-m5.4 SLE-m5.5 oS15.3 oS15.4 oS15.5 oS15.6 Prometheus 2026-03-25
SUSE openSUSE-SU-2026:10420-1 TW amazon-cloudwatch-agent 2026-03-28
SUSE openSUSE-SU-2026:10407-1 TW azure-storage-azcopy 2026-03-25
SUSE openSUSE-SU-2026:10448-1 TW bind 2026-03-31
SUSE SUSE-SU-2026:20868-1 SLE-m6.0 capstone 2026-03-27
SUSE openSUSE-SU-2026:20422-1 oS16.0 chromium 2026-03-28
SUSE openSUSE-SU-2026:0097-1 osB15 chromium 2026-03-26
SUSE openSUSE-SU-2026:0096-1 osB15 chromium 2026-03-26
SUSE SUSE-SU-2026:1105-1 SLE15 SLE-m5.2 SLE-m5.3 SLE-m5.4 SLE-m5.5 oS15.6 containerd 2026-03-27
SUSE SUSE-SU-2026:1098-1 SLE15 oS15.4 oS15.6 cosign 2026-03-27
SUSE openSUSE-SU-2026:20404-1 oS16.0 curl 2026-03-28
SUSE SUSE-SU-2026:20871-1 SLE-m6.0 docker-compose 2026-03-27
SUSE SUSE-SU-2026:1118-1 SLE12 docker-stable 2026-03-27
SUSE openSUSE-SU-2026:10442-1 TW dovecot24 2026-03-30
SUSE openSUSE-SU-2026:20410-1 oS16.0 exiv2 2026-03-28
SUSE SUSE-SU-2026:1137-1 SLE-m5.2 expat 2026-03-30
SUSE SUSE-SU-2026:1159-1 SLE12 expat 2026-03-31
SUSE SUSE-SU-2026:20935-1 fetchmail 2026-04-01
SUSE SUSE-SU-2026:20932-1 ffmpeg-7 2026-04-01
SUSE SUSE-SU-2026:1127-1 SLE12 firefox 2026-03-27
SUSE SUSE-SU-2026:1126-1 SLE15 oS15.6 firefox 2026-03-27
SUSE openSUSE-SU-2026:10413-1 TW firefox-esr 2026-03-25
SUSE openSUSE-SU-2026:10436-1 TW freeipmi 2026-03-29
SUSE SUSE-SU-2026:1129-1 SLE15 oS15.4 freerdp 2026-03-27
SUSE SUSE-SU-2026:1160-1 SLE15 oS15.6 freerdp 2026-03-31
SUSE SUSE-SU-2026:1057-1 SLE12 frr 2026-03-26
SUSE SUSE-SU-2026:1063-1 SLE15 oS15.5 oS15.6 frr 2026-03-26
SUSE SUSE-SU-2026:1005-1 SLE12 giflib 2026-03-25
SUSE openSUSE-SU-2026:20428-1 oS16.0 gimp 2026-03-28
SUSE openSUSE-SU-2026:10415-1 TW glances-common 2026-03-25
SUSE openSUSE-SU-2026:0099-1 osB15 glusterfs 2026-03-27
SUSE openSUSE-SU-2026:0104-1 osB15 glusterfs 2026-03-27
SUSE SUSE-SU-2026:1042-1 oS15.6 govulncheck-vulndb 2026-03-25
SUSE SUSE-SU-2026:1135-1 oS15.6 govulncheck-vulndb 2026-03-30
SUSE SUSE-SU-2026:1037-1 SLE15 oS15.6 grafana 2026-03-25
SUSE openSUSE-SU-2026:10449-1 TW gsl 2026-03-31
SUSE openSUSE-SU-2026:20402-1 oS16.0 gstreamer-plugins-ugly 2026-03-28
SUSE openSUSE-SU-2026:10450-1 TW incus 2026-03-31
SUSE openSUSE-SU-2026:10424-1 TW jupyter-bqplot-jupyterlab 2026-03-28
SUSE openSUSE-SU-2026:10429-1 TW jupyter-jupyterlab-templates 2026-03-29
SUSE openSUSE-SU-2026:10427-1 TW jupyter-matplotlib 2026-03-29
SUSE openSUSE-SU-2026:10440-1 TW jupyter-nbclassic 2026-03-30
SUSE SUSE-SU-2026:1091-1 SLE15 oS15.6 kea 2026-03-27
SUSE openSUSE-SU-2026:10421-1 TW kea 2026-03-28
SUSE SUSE-SU-2026:20872-1 SLE-m6.0 kernel 2026-03-27
SUSE SUSE-SU-2026:20845-1 SLE-m6.0 kernel 2026-03-27
SUSE SUSE-SU-2026:20876-1 SLE-m6.0 SLE-m6.1 kernel 2026-03-30
SUSE SUSE-SU-2026:1130-1 SLE11 kernel 2026-03-27
SUSE SUSE-SU-2026:1078-1 SLE12 kernel 2026-03-26
SUSE SUSE-SU-2026:1081-1 SLE15 kernel 2026-03-26
SUSE SUSE-SU-2026:1131-1 SLE15 SLE-m5.3 SLE-m5.4 kernel 2026-03-30
SUSE SUSE-SU-2026:1003-1 SLE15 SLE-m5.5 oS15.5 kernel 2026-03-25
SUSE SUSE-SU-2026:1077-1 SLE15 SLE-m5.5 oS15.5 kernel 2026-03-26
SUSE SUSE-SU-2026:1041-1 SLE15 oS15.6 kernel 2026-03-25
SUSE SUSE-SU-2026:20931-1 SLE16 kernel 2026-04-01
SUSE SUSE-SU-2026:20873-1 SLE16 SLE-m6.2 kernel 2026-03-27
SUSE SUSE-SU-2026:20838-1 SLE16 SLE-m6.2 kernel 2026-03-27
SUSE openSUSE-SU-2026:10452-1 TW libjavamapscript 2026-03-31
SUSE SUSE-SU-2026:1154-1 SLE15 libjxl 2026-03-31
SUSE openSUSE-SU-2026:0106-1 osB15 libjxl 2026-03-30
SUSE openSUSE-SU-2026:0107-1 osB15 libjxl 2026-03-30
SUSE openSUSE-SU-2026:10451-1 TW libpng16-16 2026-03-31
SUSE openSUSE-SU-2026:20378-1 oS16.0 libpng16 2026-03-25
SUSE openSUSE-SU-2026:10453-1 TW libpolkit-agent-1-0-127 2026-03-31
SUSE openSUSE-SU-2026:20399-1 oS16.0 libsodium 2026-03-28
SUSE SUSE-SU-2026:1004-1 SLE12 libsoup 2026-03-25
SUSE openSUSE-SU-2026:10443-1 TW libsuricata8_0_4 2026-03-30
SUSE openSUSE-SU-2026:10422-1 TW libtpms-devel 2026-03-28
SUSE openSUSE-SU-2026:20394-1 oS16.0 mumble 2026-03-25
SUSE SUSE-SU-2026:0227-2 SLE-m5.5 net-snmp 2026-03-31
SUSE openSUSE-SU-2026:20383-1 oS16.0 net-snmp 2026-03-25
SUSE SUSE-SU-2026:20940-1 net-tools 2026-04-01
SUSE SUSE-SU-2026:20870-1 SLE-m6.0 nghttp2 2026-03-27
SUSE SUSE-SU-2026:20833-1 SLE-m6.2 nghttp2 2026-03-27
SUSE SUSE-SU-2026:1056-1 SLE12 nghttp2 2026-03-26
SUSE SUSE-SU-2026:1074-1 SLE15 nghttp2 2026-03-26
SUSE openSUSE-SU-2026:10423-1 TW nginx 2026-03-28
SUSE openSUSE-SU-2026:0109-1 oS42.3 osB15 obs-service-recompress, obs-service-tar_scm 2026-03-30
SUSE openSUSE-SU-2026:0108-1 osB15 obs-service-set_version 2026-03-30
SUSE openSUSE-SU-2026:10438-1 TW openbao 2026-03-30
SUSE SUSE-SU-2026:20936-1 openexr 2026-04-01
SUSE openSUSE-SU-2026:10414-1 TW perl-Crypt-URandom 2026-03-25
SUSE openSUSE-SU-2026:0110-1 osB15 perl-Crypt-URandom 2026-03-31
SUSE SUSE-SU-2026:1152-1 SLE12 perl-XML-Parser 2026-03-31
SUSE SUSE-SU-2026:1153-1 SLE15 oS15.6 perl-XML-Parser 2026-03-31
SUSE SUSE-SU-2026:1068-1 SLE15 oS15.6 pgvector 2026-03-26
SUSE openSUSE-SU-2026:10409-1 TW pgvector-devel 2026-03-25
SUSE openSUSE-SU-2026:10439-1 TW plexus-utils 2026-03-30
SUSE openSUSE-SU-2026:10410-1 TW pnpm 2026-03-25
SUSE openSUSE-SU-2026:20397-1 oS16.0 poppler 2026-03-28
SUSE openSUSE-SU-2026:20388-1 oS16.0 postgresql17 2026-03-25
SUSE openSUSE-SU-2026:20390-1 oS16.0 protobuf 2026-03-25
SUSE SUSE-SU-2026:1007-1 python-Jinja2 2026-03-25
SUSE SUSE-SU-2026:20934-1 python-PyJWT 2026-04-01
SUSE SUSE-SU-2026:20869-1 SLE-m6.0 python-PyJWT 2026-03-27
SUSE SUSE-SU-2026:20879-1 SLE-m6.1 python-PyJWT 2026-03-30
SUSE SUSE-SU-2026:20839-1 SLE-m6.2 python-PyJWT 2026-03-27
SUSE openSUSE-SU-2026:0095-1 osB15 python-cbor2 2026-03-25
SUSE SUSE-SU-2026:1094-1 oS15.6 python-deepdiff 2026-03-27
SUSE openSUSE-SU-2026:20429-1 oS16.0 python-dynaconf 2026-03-28
SUSE SUSE-SU-2026:20933-1 python-ldap 2026-04-01
SUSE openSUSE-SU-2026:20421-1 oS16.0 python-ldap 2026-03-28
SUSE openSUSE-SU-2026:0098-1 osB15 python-nltk 2026-03-27
SUSE openSUSE-SU-2026:20407-1 oS16.0 python-orjson 2026-03-28
SUSE SUSE-SU-2026:1075-1 MP4.3 SLE15 oS15.4 oS15.6 python-pyasn1 2026-03-26
SUSE SUSE-SU-2026:20878-1 SLE-m6.1 python-pyasn1 2026-03-30
SUSE SUSE-SU-2026:20835-1 SLE-m6.2 python-pyasn1 2026-03-27
SUSE SUSE-SU-2026:1076-1 SLE12 python-pyasn1 2026-03-26
SUSE SUSE-SU-2026:1158-1 SLE15 SLE-m5.2 SLE-m5.3 SLE-m5.4 SLE-m5.5 python-pyasn1 2026-03-31
SUSE openSUSE-SU-2026:0102-1 osB15 python-pydicom 2026-03-27
SUSE openSUSE-SU-2026:20419-1 oS16.0 python-pyopenssl 2026-03-28
SUSE openSUSE-SU-2026:20393-1 oS16.0 python-simpleeval 2026-03-25
SUSE SUSE-SU-2026:1064-1 SLE15 oS15.4 oS15.6 python-tornado6 2026-03-26
SUSE openSUSE-SU-2026:20406-1 oS16.0 python-tornado6 2026-03-28
SUSE SUSE-SU-2026:1067-1 SLE15 SLE-m5.2 SLE-m5.3 SLE-m5.4 SLE-m5.5 oS15.3 python-urllib3 2026-03-26
SUSE SUSE-SU-2026:1090-1 SLE15 SLE-m5.2 SLE-m5.3 SLE-m5.4 SLE-m5.5 oS15.3 oS15.6 python3 2026-03-27
SUSE SUSE-SU-2026:1062-1 SLE15 oS15.4 oS15.6 python310 2026-03-26
SUSE SUSE-SU-2026:1117-1 MP4.3 SLE15 oS15.4 python311 2026-03-27
SUSE openSUSE-SU-2026:10425-1 TW python311-cbor2 2026-03-28
SUSE openSUSE-SU-2026:10417-1 TW python311-deepdiff 2026-03-28
SUSE openSUSE-SU-2026:10411-1 TW python311-dynaconf 2026-03-25
SUSE openSUSE-SU-2026:10426-1 TW python311-intake 2026-03-28
SUSE openSUSE-SU-2026:10418-1 TW python311-jsonpath-ng 2026-03-28
SUSE openSUSE-SU-2026:10430-1 TW python311-lmdb 2026-03-29
SUSE openSUSE-SU-2026:10431-1 TW python311-oci-sdk 2026-03-29
SUSE openSUSE-SU-2026:10412-1 TW python311-pydicom 2026-03-25
SUSE openSUSE-SU-2026:10455-1 TW python311-requests 2026-03-31
SUSE SUSE-SU-2026:1107-1 SLE15 oS15.6 python312 2026-03-27
SUSE openSUSE-SU-2026:10416-1 TW python313-PyMuPDF 2026-03-25
SUSE openSUSE-SU-2026:10419-1 TW rclone 2026-03-28
SUSE SUSE-SU-2026:1122-1 oS15.4 redis 2026-03-27
SUSE SUSE-SU-2026:1066-1 SLE15 ruby2.5 2026-03-26
SUSE SUSE-SU-2026:1027-1 SLE-m5.2 oS15.3 salt 2026-03-25
SUSE SUSE-SU-2026:20825-1 SLE-m6.1 salt 2026-03-26
SUSE SUSE-SU-2026:1030-1 SLE15 salt 2026-03-25
SUSE SUSE-SU-2026:1028-1 SLE15 SLE-m5.3 SLE-m5.4 oS15.4 salt 2026-03-25
SUSE SUSE-SU-2026:1029-1 SLE15 SLE-m5.5 oS15.5 oS15.6 salt 2026-03-25
SUSE openSUSE-SU-2026:20412-1 oS16.0 salt 2026-03-28
SUSE openSUSE-SU-2026:20380-1 oS16.0 snpguest 2026-03-25
SUSE SUSE-SU-2026:1065-1 SLE15 SLE-m5.2 SLE-m5.3 SLE-m5.4 SLE-m5.5 oS15.6 sqlite3 2026-03-26
SUSE openSUSE-SU-2026:10441-1 TW strongswan 2026-03-30
SUSE SUSE-SU-2026:20827-1 SLE-m6.1 systemd 2026-03-26
SUSE SUSE-SU-2026:20826-1 SLE-m6.1 systemd 2026-03-26
SUSE SUSE-SU-2026:1061-1 SLE15 SLE-m5.3 SLE-m5.4 SLE-m5.5 oS15.4 systemd 2026-03-26
SUSE SUSE-SU-2026:1040-1 SLE15 oS15.6 systemd 2026-03-26
SUSE openSUSE-SU-2026:10456-1 TW tailscale 2026-03-31
SUSE openSUSE-SU-2026:10447-1 TW thunderbird 2026-03-31
SUSE openSUSE-SU-2026:0111-1 osB15 tinyproxy 2026-04-01
SUSE SUSE-SU-2026:1058-1 SLE12 tomcat 2026-03-26
SUSE openSUSE-SU-2026:20414-1 oS16.0 tomcat11 2026-03-28
SUSE openSUSE-SU-2026:10444-1 TW traefik 2026-03-30
SUSE openSUSE-SU-2026:10445-1 TW traefik2 2026-03-30
SUSE SUSE-SU-2026:20941-1 ucode-intel 2026-04-01
SUSE openSUSE-SU-2026:0103-1 osB15 v2ray-core 2026-03-27
SUSE openSUSE-SU-2026:0100-1 osB15 v2ray-core 2026-03-27
SUSE SUSE-SU-2026:1051-1 SLE12 vim 2026-03-26
SUSE SUSE-SU-2026:1095-1 SLE15 SLE-m5.2 SLE-m5.3 SLE-m5.4 vim 2026-03-27
SUSE openSUSE-SU-2026:20403-1 oS16.0 vim 2026-03-28
SUSE SUSE-SU-2026:1139-1 SLE12 webkit2gtk3 2026-03-30
SUSE SUSE-SU-2026:1150-1 SLE15 oS15.4 webkit2gtk3 2026-03-31
SUSE SUSE-SU-2026:1093-1 SLE15 xen 2026-03-27
SUSE SUSE-SU-2026:1092-1 SLE15 SLE-m5.5 oS15.5 xen 2026-03-27
Ubuntu USN-8124-1 22.04 24.04 25.10 bind9 2026-03-25
Ubuntu USN-8089-2 16.04 18.04 20.04 golang-golang-x-net-dev 2026-04-01
Ubuntu USN-8130-1 22.04 24.04 25.10 gst-plugins-base1.0 2026-03-30
Ubuntu USN-8131-1 22.04 24.04 25.10 gst-plugins-good1.0 2026-03-30
Ubuntu USN-8127-1 14.04 16.04 18.04 20.04 22.04 24.04 imagemagick 2026-03-31
Ubuntu USN-8128-1 18.04 20.04 22.04 24.04 libcryptx-perl 2026-03-26
Ubuntu USN-8094-4 24.04 25.10 linux-azure, linux-azure-6.17 2026-03-25
Ubuntu USN-8125-1 24.04 linux-azure 2026-03-25
Ubuntu USN-8126-1 22.04 linux-azure-6.8 2026-03-25
Ubuntu USN-8098-9 18.04 linux-ibm-5.4 2026-03-27
Ubuntu USN-8123-1 18.04 20.04 22.04 24.04 mbedtls 2026-03-25
Ubuntu USN-8135-1 14.04 16.04 18.04 pillow 2026-03-31
Ubuntu USN-8134-1 14.04 16.04 18.04 20.04 pyasn1 2026-03-31
Ubuntu USN-8129-1 22.04 24.04 25.10 pyasn1 2026-03-30
Ubuntu USN-8133-1 16.04 18.04 20.04 22.04 24.04 25.10 pyjwt 2026-03-30
Ubuntu USN-8132-1 16.04 18.04 roundcube 2026-03-30
Ubuntu USN-8137-1 16.04 18.04 20.04 22.04 24.04 25.10 ruby2.3, ruby2.5, ruby2.7, ruby3.0, ruby3.2, ruby3.3 2026-04-01
Full Story (comments: none)

Kernel patches of interest

Kernel releases

Linus Torvalds Linux 7.0-rc6 Mar 29
Greg Kroah-Hartman Linux 6.12.79 Mar 27
Daniel Wagner v6.12.79-rt17 Mar 28
Clark Williams 6.1.167-rt62 Mar 26

Architecture-specific

Build system

Core kernel

Development tools

Device drivers

Amit Sunil Dhamne via B4 Relay Introduce MAX77759 charger driver Mar 25
Varadarajan Narayanan Add new driver for WCSS secure PIL loading Mar 26
Manivannan Sadhasivam via B4 Relay Add support for handling PCIe M.2 Key E connectors in devicetree Mar 26
Subbaraya Sundeep octeontx2: CN20K NPA Halo context support Mar 26
Thierry Reding PCI: tegra: Add Tegra264 support Mar 26
Akhil P Oommen drm/msm: A8xx Support - Batch 2 Mar 27
Cristian Cozzolino via B4 Relay Enable new features for flipkart-rimob Mar 27
Bitterblue Smith wifi: rtw89: Add support for RTL8922AU Mar 26
Miquel Raynal (Schneider Electric) Add support for Inside-Secure EIP-150 crypto block Mar 27
Mohamed Khalfella TP8028 Rapid Path Failure Recovery Mar 27
Cristian Marussi Introduce SCMI Telemetry FS support Mar 29
Markus Probst via B4 Relay Introduce Synology Microp driver Mar 29
Mario Limonciello (AMD) amd-pstate Dynamic EPP and raw EPP Mar 29
Kathiravan Thirumoorthy Introduce TLMM driver for Qualcomm IPQ5210 SoC Mar 30
Luca Leonardo Scorcia Add support for mt6392 PMIC Mar 30
Mikko Perttunen Tegra264 PWM support Mar 30
Boris Brezillon drm/panthor: Add a GEM shrinker Mar 30
alejandro.lucero-palau@amd.com Type2 device basic support Mar 30
hoff.benjamin.k@gmail.com media: pci: add AVMatrix HWS capture driver Mar 30
ming.qian@oss.nxp.com media: amphion: Add DMA memory tracking support Mar 31
Chris Morgan Add Invensense ICM42607 Mar 30
Herve Codina (Schneider Electric) timers: Add support for RZ/N1 SoCs timers Mar 31
illusion.wang nbl driver for Nebulamatrix NICs Apr 01
Alexis Czezar Torreno Add support for AD5706R DAC Apr 01
Satish Kharat via B4 Relay enic: SR-IOV V2 preparatory infrastructure Apr 01

Device-driver infrastructure

Filesystems and block layer

Memory management

Networking

Security-related

Blaise Boscaccy Reintrodce Hornet LSM Mar 25
Roberto Sassu ima: Introduce staging mechanism Mar 26
Leon Romanovsky Firmware LSM hook Mar 31

Virtualization and containers

Miscellaneous

Page editor: Joe Brockmeier


Copyright © 2026, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds