Language Selection

English French German Italian Portuguese Spanish

Programming: LLVM, Glibc, Python, Fortran and More

Filed under
Development
  • The New Features Of LLVM 9.0 & Clang 9.0 - Includes Building The Linux x86_64 Kernel

    The LLVM 9.0 release is running a few weeks behind schedule but should be out in the days ahead along with other LLVM sub-project releases like Clang 9.0. Here's a look at what's on tap for this half-year update to the LLVM compiler infrastructure.

  • A bug found in Glibc limits modern SIMD instructions to only Intel, inhibiting performance of AMD and other CPUs

    Yesterday, Mingye Wang reported a bug in the Glibc, GNU C Library. According to him, the dl_platform detection performs “cripple AMD” in the sysdeps in Glibc. The dl_platform check is used for dispatching SIMD (Single instruction, multiple data) libraries.

    Explaining the bug in detail, Wang writes, that in 2017, Glibc got the capability to transparently load libraries for specific CPU families with some SIMD extensions combinations to benefit the x86 users. However, this implementation limits two “good” sets of modern SIMD instructions to only Intel processors that prevent competitor CPUs with equivalent capabilities to fully perform, something that should not work in any free software package.

  • Find the maximum gap between the successive numbers in its sorted form from a Python list

    Given a Python list consists of plus or minus numbers, we need to sort that list then find the maximum gap between the successive numbers in that list regarding of its sign.

  • LEGB? Meet ICPO, Python’s search strategy for attributes

    When it comes to variables, Python has a well-known search strategy, known by the acronym “LEGB.” Whenever you mention a variable — and by “variable,” I mean a name that could be referencing data, a function, or a class — Python tries to find it in four different places: The local (function) scope, the enclosing function’s scope, the global scope, and finally in the “builtins” namespace.

    Variable scoping seems both boring and annoying, but it actually explains a lot about Python’s design. It’s really worth learning about, and won’t take much of your time. Indeed, I have a free e-mail course on the subject; you’re welcome to subscribe.

    But what about attributes? How does Python search for those?

  • Layering security throughout DevOps

    The DevOps movement has changed how we integrate and publish our work. It has taken us from slow, sometimes yearly, release cycles to daily (or even hourly, in some cases) releases. We are capable of writing code and seeing our changes in production almost instantly. While that can give our customers and us a warm and fuzzy feeling, it can also provide an opening for malicious attackers.

    DevOps was an amazing first step to break down walls and support fast responses to market changes and customer demands, but there is still an important wall we need to break, one important group we need to bring into the fold: security operations (SecOps).

  • Excellent Free Books to Learn Fortran

    Fortran (Formula translation) is a multi-paradigm programming language invented by John Backus of IBM in the 1950s. It is particularly notable for innovation; it was the first high-level language, using the first compiler.

    The language is designed to be simple to understand, yet retains the efficiency in execution as assembly language – about 80% as efficient as assembly/machine code. Fortran is machine independent, and a problem oriented language. It is often used in the scientific community, particularly among physicists, and is designed for scientific numerical computing. Fortran allows for high parallelization, it’s easy to optimize, and lends itself particularly well to computationally intensive fields such as finite element analysis, numerical weather prediction, computational physics, computational chemistry, and computational fluid dynamics.

    Fortran has evolved over time, with various standards including Fortran IV, Fortran 77, Fortran 90 and Fortran 95. More recent revisions are Fortran 2003, and Fortran 2008. Since Fortran 9x, it has many structured programming features, dynamic memory, operator overloading, and primitive objects. It is both the language of the past, the current, and the future (high-performance computing is unlikely to cast aside Fortran). Despite its age, Fortran is still very much alive and kicking. Fortran has a vast number of libraries of code.

More in Tux Machines

Linux 5.4 Lands A Number Of Memory Management Fixes

While mid-way through the Linux 5.4 development cycle with RC4 due out on Sunday, a number of memory management fixes just hit the mainline kernel. Andrew Morton's pull request was merged on Friday night and he noted, "Rather a lot of fixes, almost all affecting mm/" Indeed there were memory management fixes in this pull ahead of 5.4-rc4. Changes include a zRAM race condition fix, avoiding access to uninitialized memory maps, allow dropping transparent huge-pages (THP) from the page cache, and other fixes in this area including the possibility of a kernel crash. Read more Also: Intel's Cloud Hypervisor 0.3 Adds Block Device Offloading, Paravirtualized IOMMU

Programming: eMMC Flash, Compilers and Python

  • Some Tesla EV’s Control Screens Went Dark as Excessive Logging killed the eMMC Flash

    Despite wear-leveling techniques, eMMC flash memories tend to wear out over time as they have limited write cycles.

  • AMD Zen 2 Improvements For LLVM Have Been Held Up For Months By Code Review

    Back in February for LLVM Clang 9.0 was the initial AMD Zen 2 "znver2" enablement, but like the GCC support at the time it was the very basics. With time GCC picked up Zen 2 scheduler improvements and other work while sadly in the case of LLVM the improvements are still pending. Back in August, AMD's Ganesh Gopalasubramanian sent out the znver2 scheduler model for LLVM for Zen 2 CPUs but a focus on the EPYC 7002 "Rome" processors. "There are few improvements with respect to execution units, latencies and throughput when compared with znver1. The tests that were present for znver1 for llvm-mca tool were replicated. The latencies, execution units, timeline and throughput information are updated for znver2."

  • Python Add Lists

    This tutorial covers the following topic – Python Add lists. It describes various ways to join/concatenate/add lists in Python. For example – simply appending elements of one list to the tail of the other in a for loop, or using +/* operators, list comprehension, extend(), and itertools.chain() methods. Most of these techniques use built-in constructs in Python. However, the one, itertools.chain() is a method defined in the itertools module. You must also see which of these ways is more suitable in your scenario. After going through this post, you can evaluate their performance in case of large lists.

  • StackOverflow Report: (cxcix) stackoverflow python report

today's howtos

  • How to install Chromium on Ubuntu using SNAP
  • 3D using Godot

    It is time for another installment of Godot (previous entries: introduction, 2D). This time, I have dived into the world of 3D. The goal is to recreate parts of an old time favorite: Kosmonaut. Something I remember playing a lot on my dad’s 286 with amazing EGA graphics. The state of the game when writing can be seen in the short screen capture below. This is more of a tech demo status than a full game at the moment, but I hope you will still find it interesting. You can also get the complete source code. [...] Once we have a world with a track (the grid map), we add a player to the scene (the yellow blob in the image above – I need to learn Blender to create a proper ship). The player scene contains the ship – and the camera. This means that the camera follows the player automatically – very convenient. The player script is responsible for this ship’s movements based on user input. Inputs can either be pressed for a long time, used for sideways movement, or just tapped (i.e. the release is ignored), used for jumping. Each of the inputs are mapped to a keyboard key (or other input device) in the Project Settings dialog, under the Input Map tab. This feels a bit awkward to me and makes me lose the feeling of flow – but I don’t know how to do it better.

  • How to install OpenOffice on Linux
  • How To Install Free SSL Certificate for Apache on CentOS 8
  • Install VirtualBox 6 on CentOS 8
  • How to Install Odoo 13 on Ubuntu 18.04
  • How to Install Anaconda on Debian 10
  • Install Shutter Screenshot Tool via PPA in Ubuntu 19.10

Xfce 4.16 development phase starting

In the 4.14 cycle we tried to do a 1:1 port of what used to be our Gtk2 desktop environment, avoiding visual changes. In the 4.16 cycle we plan to harmonize the appearance of certain elements that either became inconsistent through the port or already were inconsistent before (e.g. toolbars or inline toolbars). We will also play with client-side decorations where we feel it makes sense (for instance replacing the so-called XfceTitledDialog, that is used for all settings dialogs with a HeaderBar version). Before anyone gets too excited (both positively or negatively): It is not planned to redesign more complex applications (like Thunar) with Headerbars in 4.16. We will however try to keep the experience and looks consistent, which means gradually moving to client side decorations also with our applications (please note that client side decorations are not the same as HeaderBars!). Through this change e.g. “dark modes” in applications will look good (see the part about the Panel below). Now before there is a shitstorm about this change I would kindly ask everyone to give us time to figure out what exactly we want to change in this cycle. Also, switching to client-side decorations alone is not a big visual departure – feel free to also dig through the client-side decorations page if you want to read/see more on this. Read more