Python News Digest 5 - 11.10

Learn how to create a Python C extension module, write DNS server in Python, why floating point numbers lie and other interesting things
11 October 2019   306

Greetings! I hope your week went great! Here's new Frontend news digest.

Learn about hash tables, adding maps to django webapp with and about fast HTTP clients. Also, long podcast will give you the tips on how to "win" interview on Python tech vacancy.

        Guides

        • Hash tables

        Learn about hash tables are, why they are being used them, and how they’re used to implement dictionaries in the most popular Python interpreter: CPython.

        • Building a Python C Extension Module

        Tutorial that will show you how to create Python interfaces in C and other things.

        • How to Add Maps to Django Web App Projects with Mapbox

        Instruction on how to add maps and location-based data to your web applications using Mapbox.

        • Write your own DNS server in Python hosted on Kubernetes

        Tutorial with code example on the topic, mentioned in the header

        • Python and fast HTTP clients

        Big guide on HTTP clients in Python

        Articles

        • PyPy’s New JSON Parser

        Article covers the decisions that were made to develop the new and improved parser.

        • Six Django template tags not often used in tutorials

        Covers "unpopular" template tags for Django

        • The Numbers, They Lie

        They really do? 

        • Is Rectified Adam (RAdam) Actually Better Than Adam (optimizer)?

        *spoiler* According to author's 24 experiemnts - no.

        Podcast

        • Winning the Python software interview

        James Timmins from RealPython talks what to do at software interview.

        GraalVM 19.0.3 to be Released

        Along with a new update, virtual machine implementations for in JS, Python, Ruby and R received updates too
        21 November 2019   62

        Oracle has published the release of the universal virtual machine GraalVM 19.3.0, which supports running applications in JavaScript (Node.js), Python, Ruby, R, any languages ​​for JVM (Java, Scala, Clojure, Kotlin) and languages ​​for which the bitcode can be generated LLVM (C, C ++, Rust). Branch 19.3 is classified as long-term support (LTS) and is notable for JDK 11 support, including the ability to compile Java code into executable files (GraalVM Native Image). The project code is distributed under the GPLv2 license. At the same time, new versions of GraalVM-based implementations of the Python, JavaScript, Ruby, and R languages ​​— GraalPython, GraalJS, TruffleRuby, and FastR — have been released.

        GraalVM provides a JIT compiler that can execute on-the-fly code of any scripting language in the JVM, including JavaScript, Ruby, Python, and R, and also makes it possible to run native code in the JVM, converted to LLVM bitcode. The tools provided by GraalVM include a language-independent debugger, a profiling system, and a memory allocation analyzer. GraalVM makes it possible to create combined applications with components in different languages, allowing you to access objects and arrays from code in other languages. For languages ​​based on the JVM, it is possible to create executable files compiled into machine code that can be executed directly with minimal memory consumption (memory and thread management are implemented through the connection of the Substrate VM framework).

        GraalJS changes (full list):

        • Implemented the Promise.allSettled proposal. It is available in ECMAScript 2020 mode (--js.ecmascript-version=2020).
        • Implemented the nullish coalescing proposal. It is available in ECMAScript 2020 mode (--js.ecmascript-version=2020).
        • Updated ICU4J library to version 64.2.

        GraalPython changes (full list):

        • Implement gc.{enable,disable,isenabled} as stubs
        • Implement charmap_build function
        • Implement hexversion in sys module

        TruffleRuby changes (full list):

        • Compilation of C extensions is now done with an internal LLVM toolchain producing both native code and bitcode. This means more C extensions should compile out of the box and this should resolve most linker-related issues.
        • It is no longer necessary to install LLVM for installing C extensions on TruffleRuby.
        • It is no longer necessary to install libc++ and libc++abi for installing C++ extensions on TruffleRuby.

         And FastR chages (full list):

        • In this release, FastR does not ship with GCC runtime libraries. Use the following commands to install the necessary dependencies:
        • Preview of support for LLVM based execution of R native extensions
        • Fixed memory leaks reported on GitHub