Language Selection

English French German Italian Portuguese Spanish


Programming: C++, Clang, WebKitGTK+

Filed under
  • Compile any C++ program 10× faster with this one weird trick!

    The main reason that C++ compiles slowly has to do with headers. Merely including a few headers in the standard library brings in tens or hundreds of thousands of lines of code that must be parsed, verified, converted to an AST and codegenerated in every translation unit. This is extremely wasteful especially given that most of that work is not used but is instead thrown away.

    With an Unity build every #include is processed only once regardless of how many times it is used in the component source files.

    Basically this amounts to a caching problem, which is one of the two really hard problems in computer science in addition to naming things and off by one errors.

  • Future Developments in clang-query

    I am not aware of any similar series existing which covers creation of clang-tidy checks, and use of clang-query to inspect the Clang AST and assist in the construction of AST Matcher expressions. I hope the series is useful to anyone attempting to write clang-tidy checks. Several people have reported to me that they have previously tried and failed to create clang-tidy extensions, due to various issues, including lack of information tying it all together.

    Other issues with clang-tidy include the fact that it relies on the “mental model” a compiler has of C++ source code, which might differ from the “mental model” of regular C++ developers. The compiler needs to have a very exact representation of the code, and needs to have a consistent design for the class hierarchy representing each standard-required feature. This leads to many classes and class hierarchies, and a difficulty in discovering what is relevant to a particular problem to be solved.

  • The GNOME (and WebKitGTK+) Networking Stack

    One guess which of those we’re going to be talking about in this post. Yeah, of course, libsoup! If you’re not familiar with libsoup, it’s the GNOME HTTP library. Why is it called libsoup? Because before it was an HTTP library, it was a SOAP library. And apparently somebody thought that when Mexican people say “soap,” it often sounds like “soup,” and also thought that this was somehow both funny and a good basis for naming a software library. You can’t make this stuff up.


    Haha no, it uses a dynamically-loadable extension point system to allow you to pick your choice of OpenSSL or GnuTLS! (Support for NSS was started but never finished.) This is OK because embedded systems vendors don’t use GPL applications and have no problems with OpenSSL, while desktop Linux users don’t produce tivoized embedded systems and have no problems with LGPLv3. So if you’re using desktop Linux and point WebKitGTK+ at an HTTPS address, then GLib is going to load a GIO extension point called glib-networking, which implements all of GIO’s TLS APIs — notably GTlsConnection and GTlsCertificate — using GnuTLS. But if you’re building an embedded system, you simply don’t build or install glib-networking, and instead build a different GIO extension point called glib-openssl, and libsoup will create GTlsConnection and GTlsCertificate objects based on OpenSSL instead. Nice! And if you’re Centricular and you’re building GStreamer for Windows, you can use yet another GIO extension point, glib-schannel, for your native Windows TLS goodness, all hidden behind GTlsConnection so that GStreamer (or whatever application you’re writing) doesn’t have to know about SChannel or OpenSSL or GnuTLS or any of that sad complexity.

Sourcegraph: An Open-Source Source Code Search Engine

Filed under

In a recent announcement, a Code Search and Navigation tool named Sourcegraph was declared Open Source. As it makes navigating through Source Code much more convenient, the tool itself going Open Source is definitely a big plus for developers!

Read more

Programming: py3status, Debian LTS Work, RcppArmadillo and Programmers

Filed under
  • py3status v3.14

    I’m happy to announce this release as it contains some very interesting developments in the project.

  • Holger Levsen: 20181110-lts-201810

    Today while writing this I also noticed that currently misses DLAs 1532 until DLA 1541, which I have just reported to the #debian-lists IRC channel and as #913426. Update: as that bug was closed quickly, I guess instead we need to focus on #859123 and #859122, so that DLAs are accessable to everyone in future.

  • RcppArmadillo

    A new RcppArmadillo release, now at, based on the new Armadillo release 9.200.4 from earlier this week, is now on CRAN, and should get to Debian very soon.

    Armadillo is a powerful and expressive C++ template library for linear algebra aiming towards a good balance between speed and ease of use with a syntax deliberately close to a Matlab. RcppArmadillo integrates this library with the R environment and language–and is widely used by (currently) 532 (or 31 more since just the last release!) other packages on CRAN.

  • Just a techie? – Techies, Devs, Boffins and Geeks

    What’s the solution? We could start by giving up on the dream of developers all being equal in ability, who can then be traded as commodities. Developers have different strengths - some are fantastic systems thinkers, some are drawn towards architecture, and others possess a laser focus on delivery. Some are better at communicating, whilst some just want to think deeply about the problem and to ponder every edge case.

    If developers are recognised as individuals and emboldened with trust and freedom, then they will play to their strengths to give an overall multiplying effect. We can embrace individualism rather than chasing it away, by celebrating and raising up the role of the software developer.

    I want my boffins and techies to be seen as surgeons. They know what they’re doing and you’re in safe hands. We’ve got junior doctors in there also to learn, but the junior doesn’t become the senior overnight. When we’ve got top surgeons the results will speak for themselves, and the good news is that the top surgeons aren’t required in such large quantities. This can make everyone happy.

GCC 9 Lands Initial Support For The OpenRISC Architecture

Filed under

It's been a long journey for the OpenRISC CPU instruction set architecture not to be confused with RISC-V, but with the GCC 9.1 compiler release due out in early 2019 will finally be initial mainline support for this ISA.

There had been GCC OpenRISC patches for a while, but the original developers were not okay with assigning their copyrights to the Free Software Foundation as is required to contribute to the GCC project (and most other FSF projects for that matter). Since earlier this year a clean-room rewrite of the GCC OpenRISC port has been taking place and the GCC steering committee approved of this CPU architecture seeing a port in GCC.

Read more

Librem 5 Development Update

Filed under
  • Librem 5 Development Kits: we are getting there!

    A few weeks ago we published an update about the forthcoming of our Librem 5 development kits when we ran into some issues which caused delays. Today we’re bringing you another update on the hardware fabrication process, as well as some pictures and a video. At the same time as the last update got posted, I was on my way to California, where we are fabricating our development kit and base boards (we are bringing everything to life there, and shipping from that same facility).


    The MIPI DSI display interface is of extremely important, and we can not order the final batch of PCBs before we know that the display (and touch controller) work perfectly. By doing the verification we also indeed discovered some problems, minor things that did not behave as expected and which we are now able to fix. Some other issues are simply mechanical issues that are hard to evaluate just from all the datasheets. And then other things happen, like parts not conforming to standards (like the M.2 WiFi/BT card, of which we got samples just a few days after doing the prototype order). For example, the M.2 card has some pretty thick components on the bottom layer and thus can not lay flush on the PCB (which had been an assumption we had when we designed the board), so we need to change the connector for the final boards.

  • Purism Still Working On Librem 5 Developer Kits, Delayed To December

    The Librem 5 GNU/Linux smartphone was originally slated to launch in January 2019 and its developer kits were supposed to ship this past summer. Now it's looking like the Librem 5 Developer Kits will hopefully arrive in December.

    This summer the developer boards were delayed to at least August and in the months since have relayed various delays. Last month they said the kits would ship "very shortly following shipping delays while now that is turning into December.

Programming: Rust 1.30.1, Solid, Schools and GSoC

Filed under
  • Announcing Rust 1.30.1

    The Rust team is happy to announce a new version of Rust, 1.30.1. Rust is a systems programming language focused on safety, speed, and concurrency.

  • What is developer efficiency and velocity?

    As I previously mentioned I am currently in the information gathering phase for improvements to desktop Firefox developer efficiency and velocity. While many view developer efficiency and velocity as the same thing–and indeed they are often correlated–it is useful to discuss how they are different.

    I like to think of developer velocity as the rate at which a unit of work is completed. Developer efficiency is the amount of effort required to complete a unit of work.

    If one were to think of the total development output as revenue, improvements to velocity would improve the top-line and improvements to efficiency would improve the bottom-line.

  • Solid: a new way to handle data on the web

    The development of the web was a huge "sea change" in the history of the internet. The web is what brought the masses to this huge worldwide network—for good or ill. It is unlikely that Tim Berners-Lee foresaw all of that when he came up with HTTP and HTML as part of his work at CERN, but he has been in a prime spot to watch the web unfold since 1989. His latest project, Solid, is meant to allow users to claim authority over the personal data that they provide to various internet giants.

    Berners-Lee announced Solid in a post on Medium in late September. In it, he noted that despite "all the good we've achieved, the web has evolved into an engine of inequity and division; swayed by powerful forces who use it for their own agendas". Part of what he is decrying is enabled by the position of power held by companies that essentially use the data they gather in ways that run directly counter to the interests of those they gather it from. "Solid is how we evolve the web in order to restore balance — by giving every one of us complete control over data, personal or not, in a revolutionary way."

    Users' data will be stored in a Solid "pod" (sometimes "personal online data store" or POD) that can reside anywhere on the internet. Since Solid deliberately sets out to build on the existing web, it should not be a surprise that URLs, along with Uniform Resource Identifiers (URIs), are used to identify pods and specific objects within them. Pods also provide one place for businesses, including Inrupt, which was co-founded by Berners-Lee, to provide services for Solid. As he noted in his post, people are willing to pay companies like Dropbox for storage; hosting Solid pods would be a similar opportunity for Inrupt and others.

  • Should a programming course be mandatory for high school students?

    But further, understanding at least the basics of programming is important to being able to fully reap the benefits of open source. Having the code available to review, edit, and share under an open license is important, but can you really make use of the full power of an open license if you're locked in by your own inability to make the changes you wish to make?

  • A Summer Of Code Question

    This is a lightly edited response to a question we got on IRC about how to best apply to participate in Google’s “Summer Of Code” program. this isn’t company policy, but I’ve been the one turning the crank on our GSOC application process for the last while, so maybe it counts as helpful guidance.

    We’re going to apply as an organization to participate in GSOC 2019, but that process hasn’t started yet. This year it kicked off in the first week of January, and I expect about the same in 2019.

    You’re welcome to apply to multiple positions, but I strongly recommend that each application be a focused effort; if you send the same generic application to all of them it’s likely they’ll all be disregarded. I recognize that this seems unfair, but we get a tidal wave of redundant applications for any position we open, so we have to filter them aggressively.

    Successful GSOC applicants generally come in two varieties – people who put forward a strong application to work on projects that we’ve proposed, and people that have put together their own GSOC proposal in collaboration with one or more of our engineers.

Culture is holding back operator adoption of open source

Filed under

At a panel session featuring STC and Vodafone at Light Reading’s Software Defined Operations and the Autonomous Network event, the operational culture was suggested a significant roadblock, as well as the threat of ROI due to shortened lifecycles and disappearing support.

Starting with the culture side, this is a simple one to explain. The current workforce has not been configured to work with an open source mentality. This is a different way of working, a notable shift away from the status quo of proprietary technologies. Sometimes the process of incorporating open source is an arduous task, where it can be difficult to see the benefits.

Read more

Also: Open Source Report Highlights Tension Between Devs & Employers

GNU: GCC Adding Hardware Support, libredwg 0.6.2 Released

Filed under
  • OpenRISC Port Revised For GCC, Still Trying To Be Mainlined Soon

    The GCC steering committee decided earlier this year they will accept the OpenRISC port for this processor ISA while the patches for it are still being prepped.

    This RISC-based open-source processor ISA has struggled to get the GCC compiler support in place after their original toolchain support was rejected: the original developers were not okay with assigning their code's copyright to the Free Software Foundation as is required for contributions to the GNU Compiler Collection. So an OpenRISC developer has been doing a clean-room rewrite of the OpenRISC GCC code since earlier this year in order to be able to mainline the code.

  • GCC Picks Up Support For Newer Loongson Processors

    Ahead of the GCC 9 feature freeze later this month, support for several newer Loongson processors have been picked up by this leading open-source compiler.

    As of today in GCC Git/SVN, the Loongson 2K1000, 3A1000, 3A2000, and 3A3000 processors are supported by the GCC compiler. In the process, the Loongson MMI, EXT, and EXT2 instructions are added as well. These processors were previously floating on the mailing list.

  • ARM Posts Compiler Patches For Their New "Ares" High Performance Core

    It's been a few years since "Ares" first appeared on the ARM road-map and it looks like this high performance core might be close to finally shipping.

    Ares first came up on the ARM road-map around 2015 when it was presented as a high-end core for servers/enterprise or even large tablets and would be manufactured on a 10nm process and have a power consumption of 1~1.2 Watts per core and based on ARM Cortex-A72. There has been some indications since that this Ares core might have shifted to a 7nm process but public information overall has been light.

  • libredwg-0.6.2 released

    Important bugfixes:
    * Fixed several out_dxf segfaults (#39)
    * Enhanced the section size limit from 2032 to 2040.
    There were several DWG files with a section size of 2035
    in the wild. (PR #41, Denis Pryt)
    * Fixed EED realloc on decoding when end - dat->byte == 1
    (PR #41, Denis Pryt)

Gitbase: Exploring Git repos with SQL

Filed under

Git has become the de-facto standard for code versioning, but its popularity didn't remove the complexity of performing deep analyses of the history and contents of source code repositories.

SQL, on the other hand, is a battle-tested language to query large codebases as its adoption by projects like Spark and BigQuery shows.

So it is just logical that at source{d} we chose these two technologies to create gitbase: the code-as-data solution for large-scale analysis of git repositories with SQL.

Gitbase is a fully open source project that stands on the shoulders of a series of giants which made its development possible, this article aims to point out the main ones.

Read more

Programming News

Filed under
  • Open Source Survey Shows Python Love, Security Pain Points

    ActiveState published results of a survey conducted to examine challenges faced by developers who work with open source runtimes, revealing love for Python and security pain points.

  • Study Finds Lukewarm Corporate Engagement With Open Source

    Companies expect developers to use open source tools at work, but few make substantial contributions in return

    Developers say that nearly three-quarters of their employers expect them to use open source software to do their jobs, but that those same companies’ contribution to the open source world is relatively low, with only 25 percent contributing more than $1,000 (£768) a year to open source projects.

    Only a small number of employers, 18 percent, contribute to open source foundations, and only 34 percent allow developers to use company time to make open source contributions, according to a new study.

    The study follows IBM’s announcement last week that it plans to buy Linux maker Red Hat for $34 billion (£26m) in order to revitalise its growth in the cloud market, an indication of the importance of open source in the booming cloud industry.

    The report by cloud technology provider DigitalOcean, based on responses from more than 4,300 developers around the world, is the company’s fifth quarterly study on developer trends, with this edition focusing entirely on open source.

  • On learning Go and a comparison with Rust

    I spoke at the AKL Rust Meetup last month (slides) about my side project doing data mining in Rust. There were a number of engineers from Movio there who use Go, and I've been keen for a while to learn Go and compare it with Rust and Python for my data mining side projects, so that inspired me to knuckle down and learn Go.

    Go is super simple. I was able to learn the important points in a couple of evenings by reading GoByExample, and I very quickly had an implementation of the FPGrowth algorithm in Go up and running. For reference, I also have implementations of FPGrowth in Rust, Python, Java and C++.

  • anytime 0.3.2

    A new minor release of the anytime package arrived on CRAN this morning. This is the thirteenth release, and the first since July as the package has gotten feature-complete.

    anytime is a very focused package aiming to do just one thing really well: to convert anything in integer, numeric, character, factor, ordered, … format to either POSIXct or Date objects – and to do so without requiring a format string. See the anytime page, or the GitHub for a few examples.

Syndicate content

More in Tux Machines

today's leftovers

OSS Leftovers

  • #RecruitmentFocus: Open source skills in high demand
    The unemployment rate in South Africa rose to 27.5% in the third quarter of 2018, while the demand for skills remains high - leaving an industry conundrum that is yet to be solved. According to SUSE, partnerships that focus on upskilling graduates and providing real-work skills, as well as placement opportunities - could be exactly what the industry in looking for.
  • Stable: not moving vs. not breaking
    There are two terms that brings a heavy controversy in the Open Source world: support and stable. Both of them have their roots in the “old days” of Open Source, where its commercial impact was low and very few companies made business with it. You probably have read a lot about maintenance vs support. This controversy is older. I first heard of it in the context of Linux based distributions. Commercial distribution had to put effort in differentiating among the two because in Open SOurce they were used indistictly but not in business. But this post is about the adjectivet stable…
  • Cameron Kaiser: A thank you to Ginn Chen, whom Larry Ellison screwed
    Periodically I refresh my machines by dusting them off and plugging them in and running them for a while to keep the disks spinnin' and the caps chargin'. Today was the day to refurbish my Sun Ultra-3, the only laptop Sun ever "made" (they actually rebadged the SPARCle and later the crotchburner 1.2GHz Tadpole Viper, which is the one I have). Since its last refresh the IDPROM had died, as they do when they run out of battery, resetting the MAC address to zeroes and erasing the license for the 802.11b which I never used anyway. But, after fixing the clock to prevent GNOME from puking on the abnormal date, it booted and I figured I'd update Firefox since it still had 38.4 on it. Ginn Chen, first at Sun and later at Oracle, regularly issued builds of Firefox which ran very nicely on SPARC Solaris 10. Near as I can determine, Oracle has never offered a build of any Firefox post-Rust even to the paying customers they're bleeding dry, but I figured I should be able to find the last ESR of 52 and install that. (Amusingly this relic can run a Firefox in some respects more current than TenFourFox, which is an evolved and patched Firefox 45.)
  • Protecting the world’s oceans with open data science
    For environmental scientists, researching a single ecosystem or organism can be a daunting task. The amount of data and literature to comb through (or create) is often overwhelming. So how, then, can environmental scientists approach studying the health of the world’s oceans? What ocean health means is a big question in itself—oceans span millions of square miles, are home to countless species, and border hundreds of countries and territories, each of which has its own unique marine policies and practices. But no matter how daunting this task may seem, it’s a necessary and vital one. So in 2012, the National Center for Ecological Analysis and Synthesis (NCEAS) and Conservation International publicly launched the Ocean Health Index (OHI), an ambitious initiative to measure the benefits that oceans provide to people, including clean water, coastal protections, and biodiversity. The idea was to create an annual assessment to document major oceanic changes and trends, and in turn, use those findings to craft better marine policy around the world.

Openwashing Leftovers

The Last Independent Mobile OS

The year was 2010 and the future of mobile computing was looking bright. The iPhone was barely three years old, Google’s Android had yet to swallow the smartphone market whole, and half a dozen alternative mobile operating systems—many of which were devoutly open source—were preparing for launch. Eight years on, you probably haven’t even heard of most of these alternative mobile operating systems, much less use them. Today, Android and iOS dominate the global smartphone market and account for 99.9 percent of mobile operating systems. Even Microsoft and Blackberry, longtime players in the mobile space with massive revenue streams, have all but left the space. Then there’s Jolla, the small Finnish tech company behind Sailfish OS, which it bills as the “last independent alternative mobile operating system.” Jolla has had to walk itself back from the edge of destruction several times over the course of its seven year existence, and each time it has emerged battered, but more determined than ever to carve out a spot in the world for a truly independent, open source mobile operating system. After years of failed product launches, lackluster user growth, and supply chain fiascoes, it’s only been in the last few months that things finally seem to be turning to Jolla’s favor. Over the past two years the company has rode the wave of anti-Google sentiment outside the US and inked deals with large foreign companies that want to turn Sailfish into a household name. Despite the recent success, Jolla is far from being a major player in the mobile market. And yet it also still exists, which is more than can be said of every other would-be alternative mobile OS company. Read more