Enhancement
48 changes
Add experimental PowerShell scripts for elixir, elixirc, and mix on Windows. Those provide a safer entry point for running Elixir from other platforms
Add Duration.to_string/1
Support several migration options in Code.format_string!/2
Add parenthesis around -- and --- in Code.format_string!/2 to make precedence clearer
Include more metadata in Code.string_to_quoted/2 when token_metadata: true to help compute ranges from the AST
Have :capture_arg as its own entry in Code.Fragment.surround_context/2
Add Config.read_config/1
Add Enum.product_by/2 and Enum.sum_by/2
Add MissingApplicationsError exception to denote missing applications
Add a new JSON module with encoding and decoding functionality
Implement JSON.Encoder for all Calendar types
Update source code parsing to match UTS #55 latest recommendations. In particular, mixed script is allowed in identifiers as long as they are separate by underscores (_), such as http_сервер. Previously allowed highly restrictive identifiers, which mixed Latin and other scripts, such as the japanese word for t-shirt, Tシャツ, now require the underscore as well
Warn on bidirectional confusability in identifiers
Verify the type of the binary generators
Track the type of tuples in patterns and inside elem/2
Perform validation of root AST nodes in unquote and unquote_splicing to catch bugs earlier
Add source, behaviour, and record information to Docs chunk metadata
Support deterministic builds in tandem with Erlang by setting ERL_COMPILER_OPTIONS=deterministic. Keep in mind deterministic builds strip source and other compile time information, which may be relevant for programs
Allow aliases and imports to be enabled conditionally in module body
Add List.ends_with?/2
Improve dbg handling of if/2, with/1 and of code blocks
Add Macro.struct_info!/2 to return struct information mirroring mod.__info__(:struct)
Add Registry.lock/3 for local locking
Add PartitionSupervisor.resize!/2 to resize the number of partitions in a supervisor (up to the limit it was started with)
Handle arbitrarily high integer values in Process.sleep/1
Add @undefined_impl_description to customize error message when an implementation is undefined
Add __deriving__/1 as optional macro callback to Protocol, no longer requiring empty implementations
Inspect special whitespace and zero-width characters using their Unicode representation
Update Unicode to 16.0
Support parameterized tests on ExUnit.Case
Support test groups: tests in the same group never run concurrently
Add test_pid as a tag
Add IEx.configure(auto_reload: true) to automatically pick up modules recompiled from other operating system processes
Add :dot_iex support to IEx.configure/1
Add report for normal/shutdown exits in IEx
Ensure only a single operating system process can compile at a given time
Ensure only a single operating system process can fetch deps at a given time
Add mix format --migrate to migrate from deprecated functionality
Add new options and metadata to improve formatting applying by editors and other environments
Taint failure manifest if requiring or compiling tests fail
Add a :listeners configuration to listen to compilation events from the current and other operating system processes
Add API for fetching all persisted compiler diagnostics
Add API for fetching all compiler tasks
color/3 is deprecated in favor of color_doc/3
fold_doc/2 is deprecated in favor of fold/2
Deprecate unless in favor of if. Use mix format --migrate to automate the migration
Macro.struct!/2 is deprecated in favor of Macro.struct_info!/2
Defining __deriving__/3 inside the Any implementation is deprecated, derive it inside the protocol definition itself