The beginning of fall is an excellent time to start something new or update a familiar tool for development, administration, or anything else. That's why we've prepared a roundup of interesting August releases that might interest you.
Go 1.23
The most apparent release is probably Go 1.23. The latest version of Go, released on August 13, 2024, is distributed under the BSD open-source license.
The major changes to the language are that Go 1.23 makes the "range-over-func" experiment (Go 1.22) a full-fledged part of the language. The "range" clause in the "for-range" loop now accepts iterator functions of the following types: func(func() bool); func(func(K) bool); func(func(K, V) bool) — as range expressions.
A new iter package provides basic operations for organizing sequence enumerations. The slices and maps packages have also been updated to include new functions for working with iterators.
Go 1.23 includes preliminary support for aliases of common types. Building a toolchain with GOEXPERIMENT=aliastypeparams allows this feature to be used within a package. However, cross-package use still needs to be supported.
In addition, the following changes have been made to the tools:
- Introduced Go telemetry to collect usage and failure statistics.
- New flags and commands were added to the go command.
- Improved go vet subcommand and cmd/cgo tool.
- Improved trace tool to better handle partial traces.
Some runtime improvements, updates to standard libraries, and changes to ports and environment variables have been made, among other things.
Magit 4.0 - Text Client for Git in Emacs
Magit is a text-based Git interface that focuses on workflow optimization. Commands are invoked with short, mnemonic keystrokes that take into account the cursor position in the interface to provide context-sensitive behavior.
Magit lets you do almost everything you can do with Git on the command line, but with more speed and advanced features. Although it took about three years to release a new version of the 1077 commit tool, it deserves your attention.
And now to the major updates in the new version of this dev tool:
- Several functions, variables, and variable values that were deprecated in previous releases, including git-commit-fill-column, magit-section-when, face aliases, magit-branch-rename-push-target, %-sequence in magit-branch-name-format were removed.
- The magit-libgit.el library, which was only a test, was also removed. Packers were advised not to include this library in the Magit package, but many neglected to do so. Since this caused problems for many users, it had to be removed.
- The tool was migrated to the new magit-completing-read-multiple implementation.
- The Magit team added many context menus, which are a great way to discover context-sensitive commands.
- The menus support was rewritten, resulting in several new features and a significant code reduction.
- The Magit team added support for displaying errors that occur during partition cleanup, which can be used for diff and log buffers.
The new version of this dev tool also includes new commands, infix arguments, hooks, and parameters, as well as improvements and bug fixes from previous versions.
The curl Project Officially Included the wcurl Project
Daniel Stenberg has officially announced the addition of wcurl to the curl project, making it the third command line tool developed under the curl umbrella.
The wcurl project is a shell around curl that allows you to easily upload files without remembering any parameters. Traditionally, you just call wcurl with a list of URLs you want to download, and wcurl chooses the appropriate defaults.
Previously, wcurl was a standalone tool, but it is now the goal of the project author to expand the scope of wcurl beyond its original Debian focus. The wcurl GitHub repository has been migrated to ensure proper redirection to the new URL, and curl contributors and maintainers are encouraged to try wcurl and contribute to its development.
This made wcurl the third command line dev tool in the curl project family. The second was trurl, after curl itself.
Library Puppeteer 23
Puppeteer 23, an open-source web browser control automation library, was released in August. The library is written in TypeScript and JavaScript, and its source code is available on GitHub under the Apache 2.0 license.
Puppeteer simplifies automating routine browser tasks and testing. The library lets you create scripts that perform actions like launching the browser, opening specific pages, focusing on search fields, entering data, submitting requests, and navigating to the first search result. Puppeteer also supports loading the latest browser version, device simulation, and handling authentication forms.
What's new in Puppeteer 23:
- The library now supports Firefox, extending the original support for Chromium-based browsers.
- By default, browsers run in headless mode.
- Puppeteer uses the Chrome DevTools Protocol (CDP) and WebDriver BiDi to interact with browsers.
The WebDriver BiDi capabilities in Puppeteer 23 deserve a special mention:
- Log message capture. An event-driven log is available, eliminating the need to poll your browser for new log messages.
- Device emulation. The most convenient way to test the layout is by using different devices. WebDriver BiDi allows you to implement any device emulation in a cross-browser way.
- Network interception. Interception can be used to prevent requests to third-party services during testing, provide mock responses, handle HTTP authentication dialogs, and override parts of the request and response, such as adding or removing headers.
- Script preloading. WebDriver BiDi provides "preload" scripts to execute before loading a page. It also offers facilities to fire custom events from scripts.
While Firefox is now officially supported in Puppeteer and has enough functionality to cover many automation and testing scenarios, some APIs are still not supported. The team plans to fill these gaps in the future.
Netplan 1.1 Toolkit
Netplan is a dev tool for easy network configuration on a Linux system. You simply create a YAML description of the required network interfaces and what each of them should be configured for. Based on this description, Netplan will generate all the necessary configurations for the rendering tool of your choice.
If you're already interested in this tool, we'll tell you a bit about the new Netplan 1.1 release, which comes six months and 120 commits after the last version:
- It is now possible to override the systemd-network-wait-online service logic to wait on specific internal (link-local) and routed network interfaces.
- Added support for changing embedded-switch-mode settings for non-virtual function (VF) network interfaces on single root I/O virtualization (SR-IOV) devices.
- It is now supported to use flags that allow the configuration parser to ignore certain misconfigurations without stopping the generation of the entire backend configuration.
- ProtonVPN and Microsoft Azure Linux-specific issues were fixed.
Now might be a good time to try something new if you want a networking tool.
SeaORM 1.0
SeaORM was developed nearly three years ago with the goal of creating a comprehensive ORM for the asynchronous Rust ecosystem. Since then, it has become an integral part of the Rust stack, especially in frameworks like Loco, which provide tight integration to simplify developers' jobs.
Today, it is an open-source relational ORM (Object-Relational Mapping) dev tool and project that helps you build web services in Rust using the language's dynamic capabilities.
Here are some of the new features and enhancements introduced in the first major release of SeaORM 1.0:
- Improved schema definition syntax with new schema helpers.
- Simplified migration scripts with less code.
- Type mappings in the SeaQL ecosystem are now reciprocal, ensuring compatibility between SeaQuery and SeaSchema.
- SQLite data types are mapped to custom types according to the SQLite affinity rule.
- rename_all attribute was added for DeriveEntityModel and DeriveActiveEnum. This allows the shell attributes of models and enums to be customized.
- Many other improvements and bug fixes.
What's next? SeaORM 1.0 is currently being built on SQLx 0.7. Due to changes in SQLx 0.8, SeaORM 1.1 will be released on SQLx 0.8 to avoid unplanned build failures. Users are also encouraged to specify a tilde requirement (e.g., "sea-orm = { version = '~1.0' }") to prevent automatic upgrades to SeaORM 1.1.
Have a great month, and see you in the next is*hosting digest!
VPS
Choose the suitable configuration and enjoy all the benefits of a virtual private server.
From $5.00/moDedicated Server
Smooth operation, high performance, and user-friendly setup - it's all there for you.
From $70.00/mo