Language Selection

English French German Italian Portuguese Spanish

Programming: Rust, C++ and Compilers

Filed under
  • The 10 Best Rust Programming Books: Experts' Recommendation

    Rust is a language that engages everybody to construct dependable and productive software. Rust is an open-source framework programming language. What Rust centers around is mobility and speed, memory security, and parallelism. A wide scope of new programming applications is being created by designers using Rust, such as game motors, program parts document frameworks, and reproduction motors for augmented reality. Therefore, to learn Rust programming with proper guidance, an exemplary set of Rust programming books is very important.


    ‘Beginning Rust’ is a Rust programming book for the very beginners. Rust is a language for developers who are working with new applications, software, and virtual reality. This book would be a great option for those at their very early stage with learning rust programming. This book has been designed in such a way that any beginner will find the proper guidance accordingly.

    This book has a total of 23 chapters covering the topics from beginning to intermediary level. Some of the topics are, Doing the arithmetic, Naming object, Controlling executing flow, Defining functions, Data Implementation, etc. If a reader can follow the book accordingly, they will be able to start their work with rust programming very easily.

  • Giovanni Mascellani: Having fun with signal handlers

    As every C and C++ programmer knows far too well, if you dereference a pointer that points outside of the space mapped on your process' memory, you get a segmentation fault and your programs crashes. As far as the language itself is concerned, you don't have a second chance and you cannot know in advance whether that dereferencing operation is going to set a bomb off or not. In technical terms, you are invoking undefined behaviour, and you should never do that: you are responsible for knowing in advance if your pointers are valid, and if they are not you keep the pieces.

    However, turns out that most actual operating system give you a second chance, although with a lot of fine print attached. So I tried to implement a function that tries to dereference a pointer: if it can, it gives you the value; if it can't, it tells you it couldn't. Again, I stress this should never happen in a real program, except possibly for debugging (or for having fun).

  • Nibble Stew: Adding (very) preliminary support for C++ modules in Meson

    One of the most common questions people ask about Meson is why does it not yet have support for building C++ modules. Up until now the answer has been simple: no compiler really supports it yet. However Visual Studio has added sufficient functionality in their latest 2019 developer preview that an implementation in Meson has become feasible. The actual code can be found in this merge request for those brave enough to try it out.

    The basic problem with C++ modules is the same as with Fortran modules: you can no longer build source files in an arbitrary order. Instead you have to scan the contents of files, see what modules each source file generates and consumes and orchestrate the build so that all source files that produce modules are built before any source files that consume them. This requires dynamic dependency generation that has been added to Ninja only fairly recently.

  • How to Parse XML in C++ – Linux Hint

    In this article, we are going to discuss how to parse XML in C++ programming language. We will see several working examples to understand the XML parsing mechanism in C++.

  • Clang LTO Support For The Linux Kernel Spun Up A Seventh Time - Phoronix

    Google engineers have sent out their latest patches for allowing the mainline Linux kernel to be built with LLVM Clang link-time optimizations (LTO) for greater performance and possibly size benefits.

    Google's team has done a good job not only working on the mainline Clang support for the Linux kernel across the likes of AArch64 and x86_64, but also with other related features of interest to them like the Clang LTO abilities to which internally they already leverage extensively. This upstreaming work has been ongoing for many months.

  • Intel C for Metal Compiler 1.0.20 Released - Phoronix

    Within Intel's vast open-source software ecosystem and much of the attention being on oneAPI as their preferred programming model for developers these days and there being multiple different open-source Intel graphics compiler back-ends, one that is often forgotten about is the Intel C for Metal Compiler that on Friday saw a new release.

    The Intel C for Metal Compiler "cm-compiler" is for their C language dialect as a GPU kernel programming language for Intel graphics processors. C for Metal is their optimized GPU programming language on Windows and Linux. While it is promoted as a "general" GPU programming language, most notably it is used by Intel for their Media Codec SDK and other media processing. In fact, outside of their media stack it's difficult recalling the last time I heard it brought up. Those wanting to learn more about Intel's C for Metal language can find examples and more documentations via There is also an overview from earlier this year at

More in Tux Machines

Python PIP Complete guide

Python is a trendy programming language that comes with tons of libraries and modules. To install these libraries, you can install them using their wheel file or use any library manager. PIP is a python library that stands for PHP Install Packages or Preferred Installer Program that helps you install, remove, and upgrade all other libraries without reinventing wheel files every time when you install new packages. Today, we guide you on using PIP to install, reinstall, remove, and manage all other libraries with this single library. Read more

today's howtos

  • My ISP Is Killing My Idle SSH Sessions. Yours Might Be Too.

    We found the culprit! The connection tested after waiting slightly more than 60 minutes didn’t work, meaning they dropped the connection from their NAT table. 1 hour is too short time for them to wait – they should wait at least 2 hours and 4 minutes. I documented my findings, and sent an email to my ISP. I quickly got a response back acknowledging that this is a bug on their side, and thanking me for my research. They still haven’t fixed the problem though.

    The tcp-keepalive-test gave the same result, but strangely enough the tcp-recv-test reported all connections as working. I assume this is because I pay my ISP to have a static public IPv4 mapped to my CGN address. But then why did the server’s keepalive packages get dropped in the SSH example? I speculate that my ISP drops those because they don’t refer to a valid TCP session anymore.

    Actually they shouldn’t track my connections at all – they should just forward all packages, and only translate the source or destination IP. But that’s a problem for another day.

  • Converting from CentOS Linux 8 to CentOS Stream - YouTube
  • How to Install V Lang on Ubuntu 20.04 - Cloudbooklet

    How to Install V Lang on Ubuntu 20.04. V is a simple language to build maintainable programs. You can learn V language within 1 hour using the documentation. It is similar to Go language and improved upon some things like no null, no global state, no undefined values and many more. In this guide you are going to learn how to install V language on Ubuntu 20.04. This installation is tested on Google Cloud platform. So these steps will work well on other cloud hosting or VPS or dedicated servers running Ubuntu or Debian.

  • How to upgrade Alpine Linux 3.12 to 3.13

    Alpine Linux version 3.13 has been released. Here is how to upgrade Alpine Linux from 3.11/3.12 to the latest stable version, 3.13 using CLI.

  • How to find if a website using gzip / deflate compression using curl on Linux and Unix
  • OpenSUSE install Brotli module for Nginx

    How do I install or add Brotli compression support to Nginx on OpenSUSE Linux to speed up my webpages and apps? Brotli is a free and open-source generic-purpose lossless compression algorithm that compresses data using various methods. It is similar in speed to deflate or gzip but offers more dense compression for Apache or Nginx web server. Nginx does not support Brotli, but we can install a module developed by Google called ngx_brotli to add support to Nginx. This page explains how to add or install Brotli support to Nginx on an OpenSUSE Linux server 15.2 to speed up webpages.

  • How To List Disk Partitions In Linux - OSTechNix

    In this brief guide, we will see all the possible ways to find and list disk partitions in Linux and Unix-like operating systems. Before getting into the topic, let us take a quick look at what is disk partitioning and how disk partitions are named in Linux.

  • How to browse the internet using Debian Terminal

    Today, we are going to talk about text-based web browsers. But you might be wondering that what’s the need for a text-based browser in today’s graphical age. There might be several reasons for it. one reason might be because some people are more Terminal savvy and they want to perform everything from their command line. Another reason might be the slow internet connection and annoying advertisements of GUI browser. So text-based browsers are the best tool that can help them enjoy a faster browser experience without any distractions.

  • How to Setup and use Google Drive on Ubuntu 20.04 - Linux Shout

    Unlike Windows on Ubuntu’s latest versions such as 20.04 LTS, we don’t need to install any extra software to connect and use Google Drive account. Everything there and we just need to login to Ubuntu using a Google account. One of the popular public cloud services to store data is Google Drives because of free 15 GB storage. Most of the time to use that we visit Google Drive’s website to upload and download files, however, you can save your time by access G – Drive storage directly on your machine like any other network drive. However, there is no official client from Google for Linux systems, well, still we can use it using the default GNOME Online Accounts feature available on Ubuntu and other Linux systems.

Gentoo 2020 in retrospect & happy new year 2021!

2020 has featured a major increase in commits to the ::gentoo repository, and especially commits from non-developers. The overall number of commits has grown from 73400 to 104500 (by 42%), while the number of commits made by non-developers has grown from 5700 (8% of total) to 11000 (10.5% of total). The latter group has featured 333 unique authors in 2019, and 391 in 2020. The ::guru repository has thrived in 2020. While 2019 left it with merely 7 contributors and a total of 86 commits, 2020 has featured 55 different contributors and 2725 commits. GURU is a user-curated repository with a trusted user model. Come join us! There was also a major increase in Bugzilla activity. 2020 featured almost 25500 bugs reported, compared to 15000 in 2019. This is probably largely thanks to Agostino Sarubbo’s new tinderboxing effort. The total number of bugs closed in 2020 was 23500, compared to 15000 in 2019. Read more Also; Distribution Kernels: module rebuilds, better ZFS support and UEFI executables

This week in KDE: text reflow in Konsole!

  • This week in KDE: text reflow in Konsole!

    This week a huge new feature landed in Konsole: it now reflows the text when you resize the window! This feature can be turned off if you don’t like it, but comes on by default. It works really well. Thanks very much to Carlos Alves and Tomaz Canabrava for this work! It will be released in Konsole 21.04.

  • KDE Will Reflow Text In Konsole On Window Resizing, Kirigami Icons Now Use Less RAM - Phoronix

    KDE developers have remained very busy in the new year working to improve their open-source desktop stack.  Following last week's near total rewrite of the KWin compositing code there has been an interesting batch of new improvements this week. Some of this week's highlights include:  - KDE's Konsole now re-flows text when resizing the window. The functionality is enabled by default (but there is an option to disable it).