Development

As the talks within WebGPU community group progress, it becomes apparent that the disagreements lie in more domains than simply technical. It’s about what the Web is today, and what we want it to become tomorrow.

For the longest time I've used vertical tabs in Firefox and I still find it odd that people don't use it more. It's a simple fact that a horizontal tab strip doesn't scale too well when you get lots of tabs.

Python 3.7, the latest version of the language aimed at making complex tasks simple, has officially entered its beta release phase. The final version of Python 3.7 is due in June 2018, but from this point onward no new features will be added to the Python 3.7 release.

In my last article, I talked about a really simple shell script for a game called Bunco, which is a dice game played in rounds where you roll three dice and compare your values to the round number. Match all three and match the round number, and you just got a bunco for 25 points. Otherwise, any die that match the round are worth one point each. It's simple—a game designed for people who are getting tipsy at the local pub, and it also is easy to program.

Git is great. It took the crown of version control systems in just a few years. Baked into the git model is that each commit has a committer and one author. Ofen this is the same person. What if there is more than one author for a commit? This is the case with pair programming or with mob programming or with any other way of collaboration where code is produced by more than one person. I talked about this at the git-merge conference last year. There are some workarounds but there is no native support in git yet.

It seems that the predominant convention to express multi-authorship in git commits is to add a Co-authored-by entry in the commit message as a so-called trailer. This adds more flexibility than trying to tweak the author and committer fields and is quite widely accepted, especially by the git community.

It started out as this fun, little hack, tickling your own fancies. You chipped away at it on weekends and in the evenings. Eventually, you sculpted it into a respectable shape. You were rightfully proud of it, so you did a kind deed and shared your creation with the world.

Now, your curiosity has taken you elsewhere, or you’re busy with other facets of your life. But concurrently, your Free / Open Source project has become popular. It’s a hit! The canonical solution to frondubling within the Marnostacean community. And users are filing issues. And sending pull requests that require your review. And building Serious Software that depends critically on your project.

The ncurses (new curses) library is a free software emulation of curses in System V Release 4.0 (SVr4), and more. It uses terminfo format, supports pads and color and multiple highlights and forms characters and function-key mapping, and has all the other SVr4-curses enhancements over BSD curses. SVr4 curses became the basis of X/Open Curses.

Ncurses 6.1 retains compatibility support for Ncurses 5.0/6.0, but adds in a variety of new features and improvements. There is now extended numeric capabilities, various internal code changes to enhance Ncurses' performance, some new functions introduced, and a variety of corrections to existing features.

In a previous post, I outlined emerging applications of reinforcement learning (RL) in industry. I began by listing a few challenges facing anyone wanting to apply RL, including the need for large amounts of data, and the difficulty of reproducing research results and deriving the error estimates needed for mission-critical applications. Nevertheless, the success of RL in certain domains has been the subject of much media coverage. This has sparked interest, and companies are beginning to explore some of the use cases and applications I described in my earlier post. Many tasks and professions, including software development, are poised to incorporate some forms of AI-powered automation. In this post, I’ll describe how RISE Lab’s Ray platform continues to mature and evolve just as companies are examining use cases for RL.

When it comes to which programming languages are in demand by employers, JavaScript, Java, Python, C++, and C—in that order—came out on top in a recent developer survey. Developers, however, want to learn languages like Python, Go, and Kotlin.

A survey of developers by technical recruiter HackerRank, conducted in October, found no gap between languages employers want and what developers actually know, with JavaScript barely edging out Java. But as far as which languages developers prefer, Python is the language developers most want to learn—and many already know it, HackerRank found.

The GNU Project and GCC developers have announced the release of GCC 7.3. GCC is the GNU Compiler Collection. This is a bug fix release as it has important fixes for regressions and bugs in GCC 7.2. It has more than 99 bugs fixed since the previous release of GCC.

Glibc 2.27 will be released as soon as next week as the latest half-year update to the GNU C Library.

The Glibc 2.27 cycle has been very heavy on performance optimizations. As covered recently, there's been AVX2/FMA optimizations, other optimized functions, numerous FMA optimizations, and more. Long story short, if you're running a recent AMD/Intel x86_64 CPU, there are chances you could see good performance improvements out of Glibc 2.27.

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.

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.

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.

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.

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.

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.

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.

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 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.

GCC 7.3 is the point release to GCC 7 that's quickly being prepared to ship the Spectre patches. Earlier this month the Spectre work was back-ported to GCC 7 and now this next point release is quickly being prepared.

It includes Brian Fox, creator of GNU Bash, Alex Leverington, one of the original Core Ethereum developers, Prashant Malik, co-creator of Apache Cassandra and Ryan Fugger, the original creator of Ripple.

More in Tux Machines

Here’s GNOME 3.28 – See What’s New

The latest version of GNOME 3 has been released today. Version 3.28 contains six months of work and new features by the GNOME community and comes with many improvements and new features.
One major new feature for this release is automatic downloading of operating systems in Boxes, which takes the work out of creating and running virtual machines – just pick the operating system that you want to create a virtual machine of, and Boxes will now download and install it for you.
Other highlights include improvements to the Calendar and Contacts applications, the ability to star files and folders in the Files application, and improved support for Thunderbolt 3 and Bluetooth LE devices. GNOME’s default UI font has also been overhauled to be more attractive and easy to read, and the on-screen keyboard has been rewritten to be more reliable and has layouts for a number of different locales.
Also: textures and paintables

LG releases webOS Open Source Edition, looks to expand webOS usage

LG’s smart TVs ship with an operating system called webOS, which is the latest version of an operating system that was developed by Palm to run on phones, acquired by HP to use with tablets, and eventually sold to LG, which is still using it today.
But now LG wants to expand the adoption of webOS and the company is working with the South Korean government to solicit business proposals from other companies interested in using webOS.
LG has also released a webOS Open Source Edition version of the operating system.

Test driving 4 open source music players and more

In my last article, I described my latest music problem: I need an additional stage of amplification to make proper use of my new phono cartridge. While my pre-amplifier contains a phono stage, its gain is only suitable for cartridges that output about 5mV, whereas my new cartridge has a nominal output of 0.4mV.
Based on my investigation, I liked the looks of the Muffsy phono kits, so I ordered the head amplifier, the power supply, and the back panel. I also needed to obtain a case to hold the boards and the back panel, available online from many vendors. Muffsy does not sell the “wall wart” necessary to power the unit, so I ordered one of those from a supplier in California. Finally, inspecting my soldering iron, solder “sucker,” and solder, I’ve realized I need to do better—so a bit more shopping, online or local, is in order there. Finally, for those, like me, whose soldering skills may be rusty and perhaps were not all that great to begin with, Muffsy kindly offers links to two instructional videos.