Repository navigation
Comparing changes
Open a pull request
base repository: atomvm/AtomVM
base: main
head repository: atomvm/AtomVM
compare: release-0.7
- 18 commits
- 15 files changed
- 6 contributors
Commits on Oct 1, 2026
-
.github: Use rebar3 3.27.1 to publish the atomvm Hex package
rebar3_hex 7.3.0 leaves HEX_API_KEY to rebar3, which reads it from 3.27.1 on; with the 3.25.1 the workflow installed, publishing crashed. Install rebar3 3.27.1 and pin the plugin to 7.3.0, so that a plugin release cannot change what a tag runs. Signed-off-by: Davide Bettio <davide@uninstall.it>
Configuration menu - View commit details
-
Copy full SHA for 94300ae - Browse repository at this point
Copy the full SHA 94300aeView commit details
Commits on Oct 2, 2026
-
Prepare next development cycle
Update CHANGELOG.md, bump version number in version.cmake. Signed-off-by: Davide Bettio <davide@uninstall.it>
Configuration menu - View commit details
-
Copy full SHA for 2de0d61 - Browse repository at this point
Copy the full SHA 2de0d61View commit details
Commits on Oct 3, 2026
-
Merge pull request #2414 from bettio/prepare-v0.7.0-beta.1-dev-cycle
Prepare next development cycle These changes are made under both the "Apache 2.0" and the "GNU Lesser General Public License 2.1 or later" license terms (dual license). SPDX-License-Identifier: Apache-2.0 OR LGPL-2.1-or-later
Configuration menu - View commit details
-
Copy full SHA for abda4a5 - Browse repository at this point
Copy the full SHA abda4a5View commit details -
Fix key order of maps decoded from MAP_EXT
Maps are expected to hold their keys in term order, but MAP_EXT decoding kept them in the encoder's order. OTP writes maps of more than 32 keys in hash order, and since OTP 26 smaller maps with atom keys in atom index order, so such maps arriving through binary_to_term or distribution compared unequal to the same map built at runtime, and a `=>` update of an existing key produced duplicate keys. Sending that map back to an OTP node is then rejected as a corrupted external term and the distribution connection is dropped. Sort the entries once decoded, and reject a map with duplicate keys with badarg, as OTP does. Fixes: #2408 Fixes: #2412 Signed-off-by: Matt Beanland <beanland@live.com.au>
Configuration menu - View commit details
-
Copy full SHA for e185380 - Browse repository at this point
Copy the full SHA e185380View commit details
Commits on Oct 4, 2026
-
Merge pull request #2413 from matt-beanland/fix-map-ext-key-order
Configuration menu - View commit details
-
Copy full SHA for 1f37255 - Browse repository at this point
Copy the full SHA 1f37255View commit details
Commits on Oct 12, 2026
-
Fix cancellation of send_after/3 timers
send_after/3 returned a fresh reference while the timer it spawned was registered under another one, so cancel_timer/1 never found it and the message was delivered anyway. erlang:send_after/3 and timer:send_after/2,3 delegate to it and were affected too. Route send_after/3 through the same gen_server path as start_timer/3, with a delivery mode that sends the bare message instead of the {timeout, Ref, Msg} tuple. Originally submitted by Qata in PR #2358, squashed and rebased onto release-0.7 as requested in review. These changes are made under both the "Apache 2.0" and the "GNU Lesser General Public License 2.1 or later" license terms (dual license). SPDX-License-Identifier: Apache-2.0 OR LGPL-2.1-or-later See also: #2358 Signed-off-by: Davide Bettio <davide@uninstall.it>Configuration menu - View commit details
-
Copy full SHA for d3eab09 - Browse repository at this point
Copy the full SHA d3eab09View commit details -
Merge pull request #2425 from bettio/fix-send-after-cancel
Fix cancellation of send_after/3 timers
Configuration menu - View commit details
-
Copy full SHA for c8fbd4c - Browse repository at this point
Copy the full SHA c8fbd4cView commit details
Commits on Oct 13, 2026
-
Keep pending signals in order when dumping a crashed process
mailbox_crashdump moved the normal messages of the outer list to the inner list and then stored the remaining signals back with a plain assignment to outer_first. Two things went wrong with that: - a signal enqueued by another scheduler between the detach and the store was overwritten and lost. With a process monitored twice by a process that is killed while the monitored one crashes, one of the two DemonitorSignals could be lost this way, and context_destroy then aborted in context_monitors_handle_terminate on `assert(target != NULL)`; - the signals were stored back oldest first while the outer list is newest first, so context_destroy processed them in reverse order. Store the signals back newest first with a compare and exchange, chaining anything enqueued in the meantime in front of them. Fixes: #2415 Signed-off-by: Zhaoqi Xu <lzy00419@outlook.com>
Configuration menu - View commit details
-
Copy full SHA for 720cf33 - Browse repository at this point
Copy the full SHA 720cf33View commit details -
Fix order of messages sent from tasks
globalcontext_send_message_from_task pushes onto the head of the global message queue when it cannot enqueue directly, and globalcontext_process_message_queue drained it from the head, so the messages a task sent in a row reached the mailbox in reverse order. Without SMP every message from a task goes through this queue: on the ESP32-C3 the network driver's eth_connected arrived before eth_started. With SMP it happens when the process table or spinlock is busy. Reverse the queue before enqueuing. test-mailbox sends two batches with the spinlock held, which forces the queued path with SMP too, and checks they arrive in order; it is built only with AVM_TASK_DRIVER_ENABLED. Signed-off-by: Gabriel Mancini <gabriel.mancini@gmail.com>
Configuration menu - View commit details
-
Copy full SHA for 761e200 - Browse repository at this point
Copy the full SHA 761e200View commit details
Commits on Oct 14, 2026
-
Merge pull request #2426 from r3wretrhy/fix/crashdump-keep-outer-sign…
…als-2415 Keep pending signals in order when dumping a crashed process Fixes #2415 These changes are made under both the "Apache 2.0" and the "GNU Lesser General Public License 2.1 or later" license terms (dual license). SPDX-License-Identifier: Apache-2.0 OR LGPL-2.1-or-later
Configuration menu - View commit details
-
Copy full SHA for 72311ba - Browse repository at this point
Copy the full SHA 72311baView commit details -
Merge pull request #2423 from iobee-io/message-queue-order
Fix order of messages sent from tasks These changes are made under both the "Apache 2.0" and the "GNU Lesser General Public License 2.1 or later" license terms (dual license). SPDX-License-Identifier: Apache-2.0 OR LGPL-2.1-or-later
Configuration menu - View commit details
-
Copy full SHA for 4ef1369 - Browse repository at this point
Copy the full SHA 4ef1369View commit details -
generic_unix: Fix poll set overflow on select
enif_select sets read/write on a select event while holding the select_events lock, but marks select_events_poll_count dirty only after releasing it (sys_register_select_event). If another scheduler rebuilds the pollfd array in between because the listeners are dirty, it reuses the cached select event count and then writes one entry for every select event with read or write set: one more than it allocated. AddressSanitizer reports it as a heap-buffer-overflow in sys_poll_events_with_poll; without it, glibc aborts later with "realloc(): invalid next size". Counting the select events on every rebuild, under the lock the loop already holds, keeps the count and the loop in agreement. Signed-off-by: Gabriel Mancini <gabriel.mancini@gmail.com>
Configuration menu - View commit details
-
Copy full SHA for 049d5dc - Browse repository at this point
Copy the full SHA 049d5dcView commit details -
Add regression test for poll set overflow
Arm a select event the way enif_select does under the select_events lock, but before sys_register_select_event marks the cached count dirty, then run a listener-only rebuild. On the parent commit the pollfd array is sized from the stale count and ASan reports a heap buffer overflow; with the fix the event is polled and notified. Not built on kqueue: an fd armed this way never reaches the kqueue. Co-authored-by: Davide Bettio <davide.bettio@ispirata.com> Signed-off-by: Gabriel Mancini <gabriel.mancini@gmail.com>
Configuration menu - View commit details
-
Copy full SHA for a70d545 - Browse repository at this point
Copy the full SHA a70d545View commit details
Commits on Oct 15, 2026
-
Merge pull request #2417 from iobee-io/poll-set-overflow
generic_unix: Fix poll set overflow on select
Configuration menu - View commit details
-
Copy full SHA for 7b8e698 - Browse repository at this point
Copy the full SHA 7b8e698View commit details -
Merge pull request #2411 from bettio/hex-publish-rebar3
.github: Use rebar3 3.27.1 to publish the atomvm Hex package These changes are made under both the "Apache 2.0" and the "GNU Lesser General Public License 2.1 or later" license terms (dual license). SPDX-License-Identifier: Apache-2.0 OR LGPL-2.1-or-later
Configuration menu - View commit details
-
Copy full SHA for 3f4eb1b - Browse repository at this point
Copy the full SHA 3f4eb1bView commit details -
esp32 uart: Fix read blocking on a stale event
A read that finds data takes every buffered byte, including the bytes of UART_DATA events still queued. When the listener then handles one of those events, uart_read_bytes waits forever for bytes that were already delivered, blocking the scheduler: with a peer that then goes quiet (a modem after ATH), the task watchdog resets the chip. Read only what the buffer holds, without waiting, and skip an event that finds it empty. Signed-off-by: Gabriel Mancini <gabriel.mancini@gmail.com>
Configuration menu - View commit details
-
Copy full SHA for d326239 - Browse repository at this point
Copy the full SHA d326239View commit details -
esp32 uart: Build the read binary from the bytes read
With a 0 tick timeout uart_read_bytes can return -1 (rx mutex busy) or fewer bytes than counted (the other scheduler drained the buffer), and the result was dropped: {ok, Bin} went out with uninitialized bytes. uart:read/2 had the same race with portMAX_DELAY: after counting the buffered bytes, the listener on the other scheduler could take some, and the read then waited for the peer to send more. Both paths now read into a temporary buffer without waiting, build the binary from the returned length, and keep the reader registered when nothing was read. The UART and USB-Serial/JTAG branches share it. Signed-off-by: Gabriel Mancini <gabriel.mancini@gmail.com>Configuration menu - View commit details
-
Copy full SHA for e06bba2 - Browse repository at this point
Copy the full SHA e06bba2View commit details
Commits on Oct 16, 2026
-
Merge pull request #2428 from iobee-io/uart-stale-event
esp32 uart: Fix read blocking on a stale event
Configuration menu - View commit details
-
Copy full SHA for 18b3587 - Browse repository at this point
Copy the full SHA 18b3587View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff main...release-0.7
