Language Selection

English French German Italian Portuguese Spanish

Development

Programming: Julia, Go, and Perl

Filed under
Development
  • An introduction to the Julia language, part 2

    Part 1 of this series introduced the Julia project's goals and development process, along with the language syntax, including the basics of control flow, data types, and, in more detail, how to work with arrays. In this part, user-defined functions and the central concept of multiple dispatch are described. It will also survey Julia's module and package system, cover some syntax features, show how to make plots, and briefly dip into macros and distributed computing.

  • Learning about Go internals at GopherCon

    GopherCon is the major conference for the Go language, attended by 1600 dedicated "gophers", as the members of its community like to call themselves. Held for the last five years in Denver, it attracts programmers, open-source contributors, and technical managers from all over North America and the world. GopherCon's highly-technical program is an intense mix of Go internals and programming tutorials, a few of which we will explore in this article.

    Internals talks included one on the scheduler and one on memory allocation; programming talks included why not to base your authorization strategy on hash-based message authentication codes (HMACs). But first, here's a little about upcoming changes to Go itself.

  • How subroutine signatures work in Perl 6

    In the first article in this series comparing Perl 5 to Perl 6, we looked into some of the issues you might encounter when migrating code into Perl 6. In the second article, we examined how garbage collection works in Perl 6, and in the third article, we looked at how containers replaced references in Perl 6. Here in the fourth article, we will focus on (subroutine) signatures in Perl 6 and how they differ from those in Perl 5.

Programming: Compiling Firefox, Mozilla's Rust, and Go/Python Adventures

Filed under
Development
Moz/FF
  • Firefox is now built with clang LTO on all* platforms

    You might have read that Mozilla recently switched Windows builds to clang-cl. More recently, those Windows builds have seen both PGO and LTO enabled.

    As of next nightly (as of writing, obviously), all tier-1 platforms are now built with clang with LTO enabled. Yes, this means Linux, Mac and Android arm, aarch64 and x86. Linux builds also have PGO enabled.

    Mac and Android builds were already using clang, so the only difference is LTO being enabled, which brought some performance improvements.

  • Rust office hours

    ...I’m going to start an experiment that I call Rust office hours. The idea is simple: I’ve set aside a few slots per week to help people work through problems they are having learning or using Rust. My goal here is both to be of service but also to gain more insight into the kinds of things people have trouble with. No problem is too big or too small!

  • This Week in Rust 251

    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.

  • Return to Limbo

    When the time came to pack up and return to Norway I considered whether I wanted to continue writing small examples in Go and porting some of my Python modules. It didn't feel all that comfortable or intuitive to write in Go, though I realise that it simply takes practice to gain familiarity. Despite this, it was worth taking some time to get an overview of the basics of Go for reasons that I'll get to later.

    [...]

    As mentioned earlier, I was interested in setting up Inferno on an old netbook – an Efika MX Smartbook – and had already experimented with running the system in its hosted form on top of Debian GNU/Linux. Running hosted Inferno is a nice way to get some experience using the system and seems to be the main way it is used these days. Running the system natively requires porting it to the specific hardware in use, and I knew that I could use the existing code for U-Boot, FreeBSD and Linux as a reference at the very least. So, the task would be to take hardware-specific code for the i.MX51 platform and adapt it to use the conventions of the Inferno porting layer. Building from the ground up, there are a few ports of Inferno to other ARM devices that could be used as foundations for a new port.

Support for a LoRaWAN Subsystem

Filed under
Development
Linux

Sometimes kernel developers find themselves competing with each other to get their version of a particular feature into the kernel. But sometimes developers discover they've been working along very similar lines, and the only reason they hadn't been working together was that they just didn't know each other existed.

Recently, Jian-Hong Pan asked if there was any interest in a LoRaWAN subsystem he'd been working on. LoRaWAN is a commercial networking protocol implementing a low-power wide-area network (LPWAN) allowing relatively slow communications between things, generally phone sensors and other internet of things devices. Jian-Hong posted a link to the work he'd done so far: https://github.com/starnight/LoRa/tree/lorawan-ndo/LoRaWAN.

He specifically wanted to know "should we add the definitions into corresponding kernel header files now, if LoRaWAN will be accepted as a subsystem in Linux?" The reason he was asking was that each definition had its own number. Adding them into the kernel would mean the numbers associated with any future LoRaWAN subsystem would stay the same during development.

Read more

Python joins movement to dump 'offensive' master, slave terms

Filed under
Development

Python creator Guido van Rossum retired as "benevolent dictator for life" in July, but like Michael Corleone in The Godfather III, he's been pulled back in to resolve a debate about politically incorrect language.

Like other open source communities, Python's minders have been asked whether they really want to continue using the terms "master" and "slave" to describe technical operations and relationships, given that the words remind some people of America's peculiar institution, a historical legacy that fires political passions to this day.

Last week Victor Stinner, a Python developer who works for Red Hat, published four pull requests seeking to change "master" and "slave" in Python documentation and code to terms like "parent," "worker," or something similarly anodyne.

Read more

Release of Git 2.19

Filed under
Development
  • Git v2.19.0

    The latest feature release Git v2.19.0 is now available at the usual places. It is comprised of 769 non-merge commits since v2.18.0, contributed by 72 people, 16 of which are new faces.

  • Git 2.19 Released With Range-Diff, Performance Work, Fixes

    Git 2.19 was released today as the latest stable feature release to this widely-used distributed version control system.

FSFE Fellowship Representative's Dilemma, Elephant in the Room and Python

Filed under
Development
OSS
  • An FSFE Fellowship Representative's dilemma

    The FSFE Fellowship representative role may appear trivial, but it is surprisingly complicated. What's best for FSFE, what is best for the fellows and what is best for free software are not always the same thing.

    As outlined in my blog Who are/were the FSFE Fellowship?, fellows have generously donated over EUR 1,000,000 to FSFE and one member of the community recently bequeathed EUR 150,000. Fellows want to know that this money is spent well, even beyond their death.

    FSFE promised them an elected representative, which may have given them great reassurance about the checks and balances in the organization. In practice, I feel that FSFE hasn't been sincere about this role and it is therefore my duty to make fellows aware of what representation means in practice right now.

    This blog has been held back for some time in the hope that things at FSFE would improve. Alas, that is not the case and with the annual general meeting in Berlin only four weeks away, now is the time for the community to take an interest. As fellowship representative, I would like to invite members of the wider free software community to attend as guests of the fellowship and try to help FSFE regain legitimacy.

    [...]

    Days later, on 25 March, FSFE management announced the extraordinary general meeting to be held in the staff office in Berlin, to confirm the constitutional change and as a bonus, try to abruptly terminate my own term as representative. I felt all these sudden changes were not happening by coincidence, rather, it came across as a nasty reprisal for February's email about constitutional changes. I had simply been trying to fulfill my ethical obligations to fellows and suddenly I had become persona non grata.

    When I first saw this termination proposal in March, it really made me feel quite horrible. They were basically holding a gun to my head and planning a vote on whether to pull the trigger. For all purposes, it looked like gangster behavior happening right under my nose in a prominent free software organization.

    Both the absurdity and hostility of these tactics was further underlined by taking this vote on my role behind my back on 26 May, while I was on a 10 day trip to the Balkans pursuing real free software activities in Albania and Kosovo, starting with OSCAL.

    In the end, while the motion to abolish elections was passed and fellows may never get to vote again, only four of the official members of the association backed the abusive motion to knife me and that motion failed. Nonetheless, it left me feeling I would be reluctant to trust FSFE again. An organization that relies so heavily on the contributions of volunteers shouldn't even contemplate treating them, or their representatives, with such contempt. The motion should never have been on the agenda in the first place.

  • The Elephant in the Room

    I recently had my attention drawn towards a blog article about the trials of Free Software development by senior Python core developer, Brett Cannon. Now, I agree with the article’s emphasis on being nice to other people, and I sympathise with those who feel that their community-related activities are wearing them down. However, I would like to point out some aspects of his article that fall rather short of my own expectations about what Free Software, or “open source” as he calls it, should be about.

    I should perhaps back up a little and mention where this article was found, which was via the “Planet Python” blog aggregator site. I do not read Planet Python, either in my browser or using a feed reader, any more. Those who would create some kind of buzz or energy around Python have somehow managed to cultivate a channel where it seems that almost every post is promoting something. I might quickly and crudely categorise the posts as follows:

  • 18 Python programming books for beginners and veterans

Compilers: LLVM and compiler as a shared library

Filed under
Development
GNU
BSD
  • LLVM 7.0 RC3 Released - The Last Release Candidate

    While only two release candidates were on the schedule for LLVM 7.0, release manager Hans Wennborg today opted for a third RC that he intends to be the final test version before officially releasing the LLVM 7.0.0 collection.

    LLVM 7.0 RC3 was released this morning as the last release candidate and incorporates the recent bug fixing that's went on since the RC2 release at the end of August. Assuming no serious issues are uncovered, this version should be very close to LLVM 7.0.0 final.

  • A Look At The Features Coming With LLVM 7.0 & Clang 7.0

    It's running a few days late, but the LLVM 7.0 release along with sub-projects like Clang 7.0 should be released very soon. Here is a look at some of the features coming to this six-month compiler infrastructure update.

    Below is a look at the highlights for LLVM 7.0. Overall it's been another busy half-year with many additions to the AMDGPU back-end, the new LLVM MCA utility, continued work on the Spectre front, OpenCL C++ support is introduced, function multi-versioning (FMV) finally for Clang, OpenMP 4.5 offloading to NVIDIA NVPTX, and many other compiler infrastructure improvements.

  • The compiler as a shared library

    Since times immemorial, compilers have been run as standalone batch processes. If you have 50 files to compile, then you invoke the compiler 50 times, once on each file. Since each compilation is independent of all others, the work can be parallelised perfectly. This seems like a simple and optimal solution.
    But, as is commonly the case, this is not the whole truth. When compiling code, there are many subtasks that are common to each individual compilation and this causes a lot of duplication of effort. Perhaps the best known case of this are C++ templates. They are parsed and codegenerated for each file that uses them yielding in the same code in dozens of files. Then the linker comes along and throws all but one of them away. There are a bunch of other issues which are discussed in this video from LLVM developer's conference:

5 Sparkling Game Engines – develop great cross-platform games

Filed under
Development
Gaming

It’s been ages since we’re recommended the best game engines. After a lot of testing, it’s clear there’s a few amazing open source game engines that need to be added to our recommendations in this genre.

Game engines offer huge benefits to game developers. The main functionality they provide is the library of core functions used in a computer game. This often includes a realtime rendering engine for 2D or 3D graphics, physics engine with collision detection, a character animation system, scene graph, sound, artificial intelligence, threading, networking, input, streaming localization support, debugging tools, integration with languages, and the provision of performance monitoring and optimization tools.

Read more

Programming/Development: Tink, C and Julia

Filed under
Development
  • Google Announces The Tink Crypto Library

    It's been open-source since its inception but is only being promoted now by Google: their Tink cryptography library that aims to be easy-to-use.

  • C considered dangerous

    At the North America edition of the 2018 Linux Security Summit (LSS NA), which was held in late August in Vancouver, Canada, Kees Cook gave a presentation on some of the dangers that come with programs written in C. In particular, of course, the Linux kernel is mostly written in C, which means that the security of our systems rests on a somewhat dangerous foundation. But there are things that can be done to help firm things up by "Making C Less Dangerous" as the title of his talk suggested.

    He began with a brief summary of the work that he and others are doing as part of the Kernel Self Protection Project (KSPP). The goal of the project is to get kernel protections merged into the mainline. These protections are not targeted at protecting user-space processes from other (possibly rogue) processes, but are, instead, focused on protecting the kernel from user-space code. There are around 12 organizations and ten individuals working on roughly 20 different technologies as part of the KSPP, he said. The progress has been "slow and steady", he said, which is how he thinks it should go.

  • An introduction to the Julia language, part 1

    Julia is a young computer language aimed at serving the needs of scientists, engineers, and other practitioners of numerically intensive programming. It was first publicly released in 2012. After an intense period of language development, version 1.0 was released on August 8. The 1.0 release promises years of language stability; users can be confident that developments in the 1.x series will not break their code. This is the first part of a two-part article introducing the world of Julia. This part will introduce enough of the language syntax and constructs to allow you to begin to write simple programs. The following installment will acquaint you with the additional pieces needed to create real projects, and to make use of Julia's ecosystem.

Open Source Python Reaches New Heights in Popularity Ranking

Filed under
Development

The new report from the TIOBE index of programming language popularity notes that for the first time, the open source Python has cracked the top three, displacing 33-year-old workhorse C++.

Released in 1991, Python covers many bases, being known for its simple onramp and ease of use even though it's a favorite among many demanding data scientists for cutting-edge analytics and artificial intelligence projects.

Read more

Syndicate content

More in Tux Machines

today's howtos

Games: Ion Maiden, Hazelnut Bastille and More

Graphics: NVIDIA, ATI RAGE and Phoronix Test Suite a Decade Later

  • New LTS Kernel 4.19 and NVidia Patch
    Under 24h after Linux Kernel 4.19 LTS is released by Greg, Patrick decided to bump the kernel used in -current to the latest LTS release. This new major version brings tons of new and interesting features, as written in Kernel Newbies. [...] I'm pretty sure it will showed up soon enough as KDE 5 is getting more stable and polished. It has been tested by Eric (and some other) for some time and it's proven to be solid.
  • A 2018 Autumn Linux Driver Update For The ATI RAGE 128 Series
    The open-source display driver for supporting these graphics cards where 32MB of SDRAM was suitable, 250 nm fabrication was standard, and core clocks around 100MHz were competitive is still being maintained... Two decades after the release of the ATI RAGE series, the open-source Linux driver continues seeing some activity and in fact a new driver release. The lone independent driver contributor ushering along the RAGE driver (xf86-video-r128) is Kevin Brace who started working on the VIA OpenChrome open-source driver in recent years and for the past number of months recently shifted focus to the classic RAGE driver. He released the xf86-video-r128 6.12.0 driver today to address two build failures. Besides addressing build problems, he also began writing some of the XAA/EXA 2D acceleration code. He did note of the changes to the 2D acceleration code paths, "It is always possible that I can mess up the code, but it appears that the code is working correctly."
  • OpenBenchmarking.org Serves Up Its 35 Millionth Test Profile/Suite Benchmark Download
    Just a little more than one month after crossing 34 million downloads, the 35,000,000 milestone was achieved -- continuing the trend that's been going on for the past number of quarters. OpenBenchmarking.org serves test profiles/suites separate from the Phoronix Test Suite package itself to allow new tests to be easily introduced without having to upgrade the PTS client itself, update existing tests with version controls, etc. OpenBenchmarking.org is also what allows users to upload their own test results publicly, obtain various hardware/software statistics, and much more.

Fedora Toolbox ready for testing!

As many of you know we kicked of a ambitious goal to revamp the Linux desktop when we launched Fedora Workstation 4 years. We wanted to remove many of the barriers to adoption of Linux as a desktop and make it a better operating system for all, especially for developers. To that effect we have been pushing a long range of initiatives over the last 4 years ago, ranging from providing a better input stack through libinput, a better display system through Wayland, a better audio and video subsystem through PipeWire, a better way of doing application packaging and dependency handling through Flatpak, a better application installation history through GNOME Software, actual firmware handling for Linux through Linux Vendor Firmware Service, better manageability through Fleet Commander, and Project Silverblue for reliable OS updates. We also had a lot of efforts done to improve general hardware handling, be that work on glvnd and friends for dealing with NVidia driver, the Bolt project for handling Thunderbolt devices better, HiDPI support in the desktop, better touch support in the desktop, improved laptop battery life, and ongoing work to improve state of fingerprint readers under Linux and to provide a flicker free boot experience. Read more