Skip to main content

Death to C, ++





The C programming language is terrible. I mean, magnificent, too. Much of the world in which we live was built atop C. It is foundational to almost all computer programming, both historically and practically; there’s a reason that the curriculum for Xavier Niel’s revolutionary “42” schools begins with students learning how to rewrite standard C library functions from scratch. But C is no longer suitable for this world which C has built.

I mean “terrible” in the “awe-inspiring dread” sense more than the “bad” sense. C has become a monster. It gives its users far too much artillery with which to shoot their feet off. Copious experience has taught us all, the hard way, that it is very difficult, verging on “basically impossible,” to write extensive amounts of C code that is not riddled with security holes. As I wrote two years ago, in my first Death To C piece:


In principle, as software evolves and grows more mature, security exploits should grow ever more baroque … But this is not the case for software written in C/C++. Buffer overflows and dangling pointers lead to catastrophic security holes, again and again and again, just like yesteryear, just like all the years of yore.

We cannot afford its gargantuan, gaping security blind spots any more. It’s long past time to retire and replace it with another language. The trouble is, most modern languages don’t even try to replace C. […] They’re not good at the thing C does best: getting down to the bare metal and working at mach speed.

If you’re a developer you already know where I’m going, of course: to tout the virtues of Rust, which is, in fact, a viable C/C++ replacement. Two years ago I suggested that people start writing new low-level coding projects in Rust instead of C. The first rule of holes, after all, is to stop digging.


Today I am seriously suggesting that when engineers refactor existing C code, especially parsers and other input handlers, they replace it — slowly, bit by bit — with Rust.

We have to do something. We must make our software foundations stronger. That means fixing operating systems, drivers, libraries, command line tools, servers, everything. We might not be able to fix most of it today, or the next year, but maybe 10 years from now the situation will have improved.

Unfortunately, we cannot rewrite everything. […] What I’m advocating for is much simpler: surgically replace weaker parts but keep most of the project intact. […] You can actually take a piece of C code inside an existing project, import the C structures and functions to access them from Rust, rewrite the code in Rust, export the functions and structures from Rust, compile it and link it with the rest of the project.

Rust is no a panacea, of course, There are many other valuable approaches to improving software stability and security. (Formal verification, for instance, or the Langsec movement.) But it is a plausible and valuable iterative approach, and we are only going to dig ourselves out of our giant collective security hole iteratively, one shovelful of better code and better tooling at a time. The sooner we start digging, the sooner C will slowly oxidize away.

Source: Business Insider.

More@ https://www.technapping.com

Comments

Popular posts from this blog

WTF is bitcoin cash and is it worth anything?

Early yesterday morning bitcoin’s blockchain forked — meaning a separate cryptocurrency was created called bitcoin cash . The way a fork works is instead of creating a totally new cryptocurrency (and blockchain) starting at block 0, a fork just creates a duplicate version that shares the same history. So all past transactions on bitcoin cash’s new blockchain are identical to bitcoin core’s blockchain, with future transactions and balances being totally independent from each other. For practical matters, all this really means is that everyone who owned bitcoin before the fork now has an identical amount of bitcoin cash that is recorded in bitcoin cash’s forked blockchain. But it’s not exactly this easy. If you control your own private keys, or hold your bitcoin in an exchange that said it would credit users’ balances with bitcoin cash, you’re fine and can access your newfound cryptocurrency right now. If you held your bitcoin with a provider like Coinbase, which said before the fork t...

Google Maps suggests BlaBlaCar for long-distance rides

Google Maps on Android and iOS now has a new transportation option. If you live in a country where French startup BlaBlaCar operates, you can now open the BlaBlaCar app and book a ride straight from Google Maps. Google isn’t adding a new tab just for BlaBlaCar. Instead, BlaBlaCar appears as a new option in the public transportation tab. For instance, if you’re looking at ways to go from Paris to Lyon, Google Maps suggests taking the TGV train — and now also BlaBlaCar. The app gives you an ETA for each transportation mode so that you can compare how long it’s going to take if you opt for the train or BlaBlaCar. Google Maps uses the same ETA for BlaBlaCar and a normal car ride. It also estimates the cost of a BlaBlaCar ride. BlaBlaCar is a ridesharing service for long-distance rides between two cities. It has tens of millions of members in dozens of countries. Think about it as a sort of Airbnb for carpooling. When you are driving from one city to another, BlaBlaCar can help you fi...

Carwow, a UK startup that helps you buy a new car, raises $39M Series C

Carwow , a platform that helps you buy a new car, has closed $39 million in Series C funding. The round was led by new investor Vitruvian Partners, with existing investors Accel Partners and Balderton Capital also participating. At today’s exchange rate it brings total funding to approximately $62.6 million. Founded in late 2010, Carwow originally launched as a car review aggregator before pivoting to become a site that claims to improve the experience of buying a new car. It allows consumers to compare offers online and buy directly from ‘trusted’ dealers that are registered with the platform, specifically avoiding the arduous but otherwise necessary requirement to haggle over price and in a way that potentially introduces more transparency. Specifically, through Carwow you can research, select and configure new cars before receiving and offers from U.K. franchised dealers. The idea is that you can then make an informed decision on those offers based on price, location, dealer rating...