On Friday, Libc++ version 9 was released; libc++ is an implementation of the C++ standard library, targeting C++11, C++14 and above. Libc++ 9 is a part of the LLVM Compiler Infrastructure, release 9.0.0 which was made available in September. Libc++ 9 adds explicit support for WebAssembly System Interface (WASI) along with major improvements from the previous release and new feature work. Libc++ has also dropped support for GCC 4.9; they now support GCC 5.1 and above.
WASI is a system interface for the WebAssembly platform. Currently, it supports sandboxed access to the filesystem via a POSIX-like API, as well as other basic interfaces like argv, environment variables, random numbers, and timers. There are three popular implementations of WASI: wasmtime, Mozilla’s WebAssembly runtime, Lucet, Fastly’s WebAssembly runtime, and a browser polyfill.
Improvements in Libc ++ 9
- Minor fixes to std::chrono operators.
- libc++ now correctly handles Objective-C++ ARC qualifiers in std::is_pointer.
- Front and back methods are added to std::span
- std::to_chars now adds leading zeros.
- Ensure std::tuple is trivially constructible.
- std::aligned_union now works in C++03.
- Output of nullptr to std::basic_ostream is formatted properly.
- P0608 is now implemented as a sane variant converting constructor.
- std::is_unbounded_array and std::is_bounded_array added to type traits.
- std::atomic now includes many new features and specialization
- Added std::midpoint and std::lerp math functions and std::is_constant_evaluated function
- Erase-like algorithms now return size type.
- Added contains method to container types.
- std::swap is now a constant expression.
- std::move and std::forward now both work in C++03 mode.
People on Twitter were quite happy with WASI support in libc ++
Cool! Libc++9.0.0 added explicit support for WebAssembly System Interface (WASI). WASI is a standard interface that adds various I/O capabilities to WebAssembly, making it a much more versatile runtime. #WebAssembly
— Stephen.D (@Stephen_d2005) September 30, 2019
Libc++ 9.0.0 adds explicit support for WASI https://t.co/1zsuwfc6Az #webassembly #wasm #wasi #llvm
— thewaywarddeveloper (@iwillrunoutofsp) October 11, 2019
You can also see the release notes for additional information.
Read Next
Introducing Weld, a runtime written in Rust and LLVM for cross-library optimizations
LLVM 9 releases with official RISC-V target support, asm goto, Clang 9, and more
LLVMs Arm stack protection feature turns ineffective when the stack is re-allocated