Language Selection

English French German Italian Portuguese Spanish


GCC 7.3 Released

Filed under
  • GCC 7.3 Released

    The GNU Compiler Collection version 7.3 has been released.

    GCC 7.3 is a bug-fix release from the GCC 7 branch containing important fixes for regressions and serious bugs in GCC 7.2 with more than 99 bugs fixed since the previous release.

    This release includes code generation options to mitigate Spectre Variant 2 (CVE 2017-5715) for the x86 and powerpc targets.

  • GCC 7.3 Released With Spectre V2 Mitigation Support

    GNU Compiler Collection 7.3 is now available as the latest GCC7 point release and the prominent changes being support for helping mitigate Spectre variant two using some new compiler switches.

    GCC 7.3 has backported Retpoline support after GCC 8.0 development code initially received the support earlier this month. This GCC support building out a patched kernel can lead to "full" retpoline protection for the system.

    The Retpoline support adds a few new compiler switches, namely -mindirect-branch= for dealing with indirect branches to avoid speculative execution.

Development: ActiveState, Python, Rust

Filed under
  • ActiveState Announces Plans for SaaS Platform, Leads with Open Source Solution for DevSecOps

    ActiveState, a leader in providing commercial open source language distributions, announced today its plans for a SaaS Platform. The platform will fulfill enterprises’ unaddressed need for open source language solutions. The company leads the offering with the ability to verify open source Python applications at runtime; Python distros have security built into the language runtime. IT Security & DevSecOps teams benefit from automatic runtime verification.

  • Threading in Python

    The basic idea behind threading is a simple one: just as the computer can run more than one process at a time, so too can your process run more than one thread at a time. When you want your program to do something in the background, you can launch a new thread. The main thread continues to run in the foreground, allowing the program to do two (or more) things at once.

    What's the difference between launching a new process and a new thread? A new process is completely independent of your existing process, giving you more stability (in that the processes cannot affect or corrupt one another) but also less flexibility (in that data cannot easily flow from one thread to another). Because multiple threads within a process share data, they can work with one another more closely and easily.

  • This Week in Rust 218

    Hello and welcome to another issue of This Week in Rust! Rust is a systems language pursuing the trifecta: safety, concurrency, and speed. This is a weekly summary of its progress and community. Want something mentioned? Tweet us at @ThisWeekInRust or send us a pull request. Want to get involved? We love contributions.

Programming: Perl, JavaScript, Ick, PowerFake, pylint-django, nbdkit filters

Filed under
  • An Open Letter to the Perl Community

    Some consider Perl 6 to be a sister language to Perl 5. Personally, I consider Perl 6 more of a genetically engineered daughter language with the best genes from many parents. A daughter with a difficult childhood, in which she alienated many, who is now getting out of puberty into early adulthood. But I digress.

  • Long Live Perl 5!

    While not mentioned in the original Letter, a frequent theme in the comments was that Perl 6 should be renamed, as the name is inaccurate or is damaging.

    This is the topic on which I wrote more than once and those who have been following closely know that, yes, many (but by no means all) in the Perl 6 community acknowledge the name is detrimental to both Perl 6 and Perl 5 projects.

    This is why with a nod of approval from Larry we're moving to create an alias to Perl 6 name during 6.d language release, to be available for marketing in areas where "Perl 6" is not a desirable name.

  • JavaScript Trends for 2018

    Trying to bet on how many new JavaScript frameworks will be released each month, is, the best software engineer’s game in the past 5 years.

  • Ick: a continuous integration system

    TL;DR: Ick is a continuous integration or CI system. See for more information.

  • Introducing PowerFake for C++

    PowerFake is a new mini-framework/tool to make it possible to fake/mock free functions and static & non-virtual member functions in C++. It requires no change to the code under test, but it might need some structural changes, like moving some parts of the code to a different .cpp file; or making inline functions non-inline when built for testing.

    It is useful for writing unit tests and faking/mocking functions which should not/cannot be run during a test case. Some say that such a feature is useful for existing code, but should not be needed for a code which is written testable from the beginning. But, personally I don’t agree that it is always appropriate to inject such dependencies using virtual interfaces or templates.

    Currently, it is not supposed to become a mocking framework on its own. I hope that I can integrate PowerFake into at least one existing C++ mocking framework. Therefore, currently it doesn’t provide anything beyond faking existing functions.

  • Introducing pylint-django 0.8.0

    Since my previous post was about writing pylint plugins I figured I'd let you know that I've released pylint-django version 0.8.0 over the weekend. This release merges all pull requests which were pending till now so make sure to read the change log.

  • nbdkit filters

    nbdkit is our toolkit for creating Network Block Device (NBD) servers from “unusual” data sources. nbdkit was already configurable by writing simple plugins in several programming languages. Last week Eric Blake and I added a nice new feature: You can now modify existing plugins by placing “filters” in front of them.

Compilers and CLI: LLVM, GCC and Bash

Filed under

10 Best Text Editors For Linux And Programming (2018 Edition)

Filed under

The year 2018 is here. Just in case you’re looking for some powerful text editor for Linux to kickstart programming new year, you’re at the right place. While the debate of the best programming editors for Linux won’t end anytime soon, there are many editors that bring an impressive set of features. While Vim, Emacs, and Nano are older and dependable players in the game, Atom, Brackets, and Sublime Text are relatively newer text editors.

Read more

Debian Development Picks

Filed under
  • PrimeZ270-p, Intel i7400 review and Debian – 1

    Before diving into installation, I had been reading for quite a while Matthew Garett’s work. Thankfully most of his blog posts do get mirrored on hence it is easy to get some idea as what needs to be done although have told him (I think even shared here) that he should somehow make his site more easily navigable. Trying to find posts on either ‘GPT’ and ‘UEFI’ and to have those posts in an ascending or descending way date-wise is not possible, at least I couldn’t find a way to do it as he doesn’t do it date-wise or something.

  • Rblpapi 0.3.8: Strictly maintenance

    Another Rblpapi release, now at version 0.3.8, arrived on CRAN yesterday. Rblpapi provides a direct interface between R and the Bloomberg Terminal via the C++ API provided by Bloomberg Labs (but note that a valid Bloomberg license and installation is required).

  • build service now supports backports

    Currently, the FAIme service offers images build with Debian stable, stable with backports and Debian testing.

Perl Advocacy

Filed under
  • My DeLorean runs Perl

    My signature hobby project these days is a computerized instrument cluster for my car, which happens to be a DeLorean. But, whenever I show it to someone, I usually have to give them a while to marvel at the car before they even notice that there's a computer screen in the dashboard. There's a similar problem when I start describing the software; programmers immediately get hung up on "Why Perl???" when they learn that the real-time OpenGL rendering of instrument data is all coded in Perl. So, any discussion of my project usually starts with the history of the DeLorean or a discussion of the merits of Perl vs. other, more-likely tools.

  • An overview of the Perl 5 engine

    As I described in "My DeLorean runs Perl," switching to Perl has vastly improved my development speed and possibilities. Here I'll dive deeper into the design of Perl 5 to discuss aspects important to systems programming.

Programming: Donald Knuth’s 80th Birthday and More

Filed under
  • Octogenarianhood

    2018 began for me with an absolutely incredible 80th birthday celebration called Knuth80, held in the delightful city of Piteå in northern Sweden. It's impossible for me to thank adequately all of the wonderful people who contributed their time to making this event such a stunning success, certainly one of the greatest highlights of my life. Many of the happenings were also captured digitally in state-of-the-art audio and video, so that others will be able to share some of this joy. I'll link to that data when it becomes available.

  • Celebrating Donald Knuth’s 80th Birthday

    Don suggests that some of the participants who have a little free time might like to look at a few conjectures about set partitions and generating functions that he has put online at

  • Tidyverse and data.table, sitting side by side ... (Part 1)
  • Rcpp 0.12.15: Numerous tweaks and enhancements

    The fifteenth release in the 0.12.* series of Rcpp landed on CRAN today after just a few days of gestation in incoming/.

    This release follows the 0.12.0 release from July 2016, the 0.12.1 release in September 2016, the 0.12.2 release in November 2016, the 0.12.3 release in January 2017, the 0.12.4 release in March 2016, the 0.12.5 release in May 2016, the 0.12.6 release in July 2016, the 0.12.7 release in September 2016, the 0.12.8 release in November 2016, the 0.12.9 release in January 2017, the 0.12.10.release in March 2017, the 0.12.11.release in May 2017, the 0.12.12 release in July 2017, the 0.12.13.release in late September 2017, and the 0.12.14.release in November 2017 making it the nineteenth release at the steady and predictable bi-montly release frequency.

    Rcpp has become the most popular way of enhancing GNU R with C or C++ code. As of today, 1288 packages on CRAN depend on Rcpp for making analytical code go faster and further, along with another 91 in BioConductor.

GNU Privacy Guard (GnuPG), GNU Radio, and BPF Compiler Collection

Filed under
  • Future directions for PGP

    Back in October, LWN reported on a talk about the state of the GNU Privacy Guard (GnuPG) project, an asymmetric public-key encryption and signing tool that had been almost abandoned by its lead developer due to lack of resources before receiving a significant infusion of funding and community attention. GnuPG 2 has brought about a number of changes and improvements but, at the same time, several efforts are underway to significantly change the way GnuPG and OpenPGP are used. This article will look at the current state of GnuPG and the OpenPGP web of trust, as compared to new implementations of the OpenPGP standard and other trust systems.

    GnuPG produces encrypted files, signed messages, and other types of artifacts that comply to a common standard called OpenPGP, described in RFC 4880. OpenPGP is derived from the Pretty Good Privacy (PGP) commercial software project (since acquired by Symantec) and today is almost synonymous with the GnuPG implementation, but the possibility exists for independent implementations of the standard that interoperate with each other. Unfortunately, RFC 4880 was released in 2007 and a new standard has not been published since then. In the meantime, several extensions have been added to GnuPG without broader standardization, and a 2017 IETF working group formed to update RFC 4880 ultimately shut down due to lack of interest.

    GnuPG 2 is a significantly heavier-weight software package than previous GnuPG versions. A major example of this change in architecture is GnuPG 2's complete reliance on the use of the separate gpg-agent daemon for private-key operations. While isolating private-key access within its own process enables improvements to security and functionality, it also adds complexity.

    In the wake of the Heartbleed vulnerability in OpenSSL, a great deal of scrutiny has been directed toward the maintainability of complex and long-lived open-source projects. GnuPG does not rely on OpenSSL for its cryptographic implementation, instead it uses its own independent implementation: Libgcrypt. This leads to the question of whether GnuPG's cryptographic implementation is susceptible to the same kinds of problems that OpenSSL has had; indeed the concern may be larger in the case of GnuPG.

  • Foundations of Amateur Radio - Episode 137

    I've been playing with a wonderful piece of software called GNU Radio, more on that in a moment.

  • An introduction to the BPF Compiler Collection

    In the previous article of this series, I discussed how to use eBPF to safely run code supplied by user space inside of the kernel. Yet one of eBPF's biggest challenges for newcomers is that writing programs requires compiling and linking to the eBPF library from the kernel source. Kernel developers might always have a copy of the kernel source within reach, but that's not so for engineers working on production or customer machines. Addressing this limitation is one of the reasons that the BPF Compiler Collection was created. The project consists of a toolchain for writing, compiling, and loading eBPF programs, along with example programs and battle-hardened tools for debugging and diagnosing performance issues.

    Since its release in April 2015, many developers have worked on BCC, and the 113 contributors have produced an impressive collection of over 100 examples and ready-to-use tracing tools. For example, scripts that use User Statically-Defined Tracing (USDT) probes (a mechanism from DTrace to place tracepoints in user-space code) are provided for tracing garbage collection events, method calls and system calls, and thread creation and destruction in high-level languages. Many popular applications, particularly databases, also have USDT probes that can be enabled with configuration switches like --enable-dtrace. These probes are inserted into user applications, as the name implies, statically at compile-time. I'll be dedicating an entire LWN article to covering USDT probes in the near future.

Linux Kernel Development

Filed under
  • New Sound Drivers Coming In Linux 4.16 Kernel

    Due to longtime SUSE developer Takashi Iwai going on holiday the next few weeks, he has already sent in the sound driver feature updates targeting the upcoming Linux 4.16 kernel cycle.

    The sound subsystem in Linux 4.16 sees continued changes to the ASoC code, clean-ups to the existing drivers, and a number of new drivers.

  • Varlink: a protocol for IPC

    One of the motivations behind projects like kdbus and bus1, both of which have fallen short of mainline inclusion, is to have an interprocess communication (IPC) mechanism available early in the boot process. The D-Bus IPC mechanism has a daemon that cannot be started until filesystems are mounted and the like, but what if the early boot process wants to perform IPC? A new project, varlink, was recently announced; it aims to provide IPC from early boot onward, though it does not really address the longtime D-Bus performance complaints that also served as motivation for kdbus and bus1.

    The announcement came from Harald Hoyer, but he credited Kay Sievers and Lars Karlitski with much of the work. At its core, varlink is simply a JSON-based protocol that can be used to exchange messages over any connection-oriented transport. No kernel "special sauce" (such as kdbus or bus1) is needed to support it as TCP or Unix-domain sockets will provide the necessary functionality. The messages can be used as a kind of remote procedure call (RPC) using an API defined in an interface file.

  • Statistics for the 4.15 kernel

    The 4.15 kernel is likely to require a relatively long development cycle as a result of the post-rc5 merge of the kernel page-table isolation patches. That said, it should be in something close to its final form, modulo some inevitable bug fixes. The development statistics for this kernel release look fairly normal, but they do reveal an unexpectedly busy cycle overall.

    This development cycle was supposed to be relatively calm after the anticipated rush to get work into the 4.14 long-term-support release. But, while 4.14 ended up with 13,452 non-merge changesets at release, 4.15-rc6 already has 14,226, making it one of the busiest releases in the kernel project's history. Only 4.9 (16,214 changesets) and 4.12 (14,570) brought in more work, and 4.15 may exceed 4.12 by the time it is finished. So far, 1,707 developers have contributed to this kernel; they added 725,000 lines of code while removing 407,000, for a net growth of 318,000 lines of code.

  • A new kernel polling interface

    Polling a set of file descriptors to see which ones can perform I/O without blocking is a useful thing to do — so useful that the kernel provides three different system calls (select(), poll(), and epoll_wait() — plus some variants) to perform it. But sometimes three is not enough; there is now a proposal circulating for a fourth kernel polling interface. As is usually the case, the motivation for this change is performance.
    On January 4, Christoph Hellwig posted a new polling API based on the asynchronous I/O (AIO) mechanism. This may come as a surprise to some, since AIO is not the most loved of kernel interfaces and it tends not to get a lot of attention. AIO allows for the submission of I/O operations without waiting for their completion; that waiting can be done at some other time if need be. The kernel has had AIO support since the 2.5 days, but it has always been somewhat incomplete. Direct file I/O (the original use case) works well, as does network I/O. Many other types of I/O are not supported for asynchronous use, though; attempts to use the AIO interface with them will yield synchronous behavior. In a sense, polling is a natural addition to AIO; the whole point of polling is usually to avoid waiting for operations to complete.

Syndicate content

More in Tux Machines

Software: Corebird, RawTherapee, LVFS and More

Red Hat and Fedora: Red Hat Enterprise Linux 8 Alpha, Results Imminent, Fedora Atomic Workstation and More

Ubuntu and Mint Leftovers

  • Ubuntu 18.04's Automatic Suspend Shows Linux Suspend Can Still Be An Issue In 2018
    One of the subtle changes that seemed to have been made during the Ubuntu 18.04 development cycle is automatic suspend now being enabled by default on desktop systems. Automatic suspend is flipped on with Ubuntu 18.04 desktop after a twenty minute delay of being idle, at least on several systems I've been running the daily Bionic Beaver with this month.
  • Bid “bonjour” to our Bionic Beaver!
    Along with a sneak preview of our official Bionic mascot, it’s a short update this week as we’re all heads-down in bug fixing mode. There are a couple of links to check out if you’re interested in what sort of data we want to collect about hardware and setup, with links to the source.
  • MintBox Mini 2
    Based on the Compulab Fitlet2, the new Mini is just as small as the original MintBox Mini and the MintBox Mini Pro but with much better specifications, better performance and a few more features.

Android Leftovers

  • Android tips and tricks: 10 great ways to boost your phone experience
  • About the privacy of the unlocking procedure for Xiaomi’s Mi 5s plus
    First, you got to register on Xiaomi’s website, and request for the permission to unlock the device. That’s already bad enough: why should I ask for the permission to use the device I own as I am pleased to? Anyway, I did that. The procedure includes receiving an SMS. Again, more bad: why should I give-up such a privacy thing as my phone number? Anyway, I did it, and received the code to activate my website account. Then I started the unlock program in a virtualbox Windows XP VM (yeah right… I wasn’t expecting something better anyway…), and then, the program tells me that I need to add my Xiaomi’s account in the phone. Of course, it then sends a web request to Xiaomi’s server. I’m already not happy with all of this, but that’s not it. After all of these privacy breaches, the unlock APP tells me that I need to wait 72 hours to get my phone to account association to be activated. Since I wont be available in the middle of the week, for me, that means waiting until next week-end to do that. Silly…
  • You Can Now Try Android Games Without Downloading Them
    Tired of downloading games only to realize they suck? Google Play Instant might mean never doing that again.
  • Plex for Android Will Soon Let You Cast Your Own Videos to Chromecast