Skip to content

Tags: lumbermill/prremote

Tags

v0.3.0

Toggle v0.3.0's commit message
chore(release): v0.3.0

Highlights since v0.2.1 (breaking):
- WiFi API renamed from CYW43 to chip-neutral WiFi (no compat alias)
- esp32c6: UDPSocket/TCPSocket, hands-free usb-reset flash, PWM clock fix
- esp32/esp32c6: LCD draw_line/circle/ellipse; SPI<->LCD bus handoff fix
- esp32c6: default I2C pins to XIAO D4/D5 (GPIO22/23); pin_check.rb self-test
- docs: SUPPORT.md matrix + rake smoke (NTP hang fixed)

Also restore placeholder Wi-Fi credentials (MySSID/MyPassword) in
examples/xiao_c6/wifi.rb and socket_udp.rb, which had a real test-AP
SSID/password committed by mistake in 7952a05.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

runtime-0.3.0

Toggle runtime-0.3.0's commit message
fix(runtime): vendor TCP/UDP socket VM bindings to fix mruby/c refcou…

…nt bugs

picoruby-socket's src/mrubyc VM bindings leak references:

- udp_socket.c over-increfs every element of recvfrom_nonblock's return
  structure (mrbc_array_set takes ownership without increffing), leaking
  the whole result on every receive — OOM after ~200 round-trips.
- Both udp_socket.c and tcp_socket.c call mrbc_incref(&v[0]) right before
  SET_*_RETURN(), which already releases the receiver's register reference
  exactly once. Each call adds +1 to the socket's 16-bit ref_count until it
  saturates — "assert failed: mrbc_decref value.h:566" after ~65k calls.

The submodule stays unmodified: both bindings are now vendored copies
(runtime/src/udp_socket_binding.c / tcp_socket_binding.c) kept diffable
against upstream, with only the refcount fixes applied. The lwIP port
sources still come from the submodule unchanged. Wired into the esp32c6
build (both) and the picow build (TCP, incl. the picoruby_compat.h
per-file include property).

Verified on a physical XIAO ESP32C6 against echo servers: UDP completed
617,850 round-trips with stable memory; TCP completed 70,000 send +
read_nonblock round-trips on one socket with no assert and zero misses.
picow verified by a clean build.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

v0.2.1

Toggle v0.2.1's commit message
Release 0.2.1: ESP32-C6 LCD + recv self-recovery

ESP32-C6 (XIAO):
- LCD support: compile the shared ILI9342C/ILI9341 driver into the C6 build
  (LCD_HOST -> SPI2_HOST, LEDC channel 5, esp_lcd linked).
- LCD.new(madctl:) overrides the per-rotation MADCTL byte. Verified on a
  MSP2807 ILI9341: madctl: 0xE8 gives upright 320x240 landscape (0x28 = 180°).
  examples/xiao_c6/lcd_hello.rb uses 0xE8.
- LCD.new(invert:) selects INVON/INVOFF for ILI9342C vs ILI9341 panels.

Fix: intermittent hard wedge on ESP32-C6
- Under sustained back-to-back receives the USB Serial/JTAG occasionally drops
  a byte; recv_exact then blocked in getchar() forever (0x03 could not break
  it out), wedging the device until a physical reset.
- recv path now reads with a 2 s per-byte timeout (new prr_getchar_timeout on
  all platforms); a dropped byte aborts with "ERROR recv" and returns to READY,
  so the next run recovers without a reset.
- C6 USB Serial/JTAG RX ring enlarged 256 B -> 4096 B to prevent the drop.
- Verified on hardware: deterministic truncated-payload test recovers in ~2 s;
  200 tight 4.3 KB cycles with zero drops (previously wedged within 1-94).

Release: VERSION 0.2.1, CHANGELOG, README, Gemfile.lock.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

runtime-0.2.1

Toggle runtime-0.2.1's commit message
Release 0.2.1: ESP32-C6 LCD + recv self-recovery

ESP32-C6 (XIAO):
- LCD support: compile the shared ILI9342C/ILI9341 driver into the C6 build
  (LCD_HOST -> SPI2_HOST, LEDC channel 5, esp_lcd linked).
- LCD.new(madctl:) overrides the per-rotation MADCTL byte. Verified on a
  MSP2807 ILI9341: madctl: 0xE8 gives upright 320x240 landscape (0x28 = 180°).
  examples/xiao_c6/lcd_hello.rb uses 0xE8.
- LCD.new(invert:) selects INVON/INVOFF for ILI9342C vs ILI9341 panels.

Fix: intermittent hard wedge on ESP32-C6
- Under sustained back-to-back receives the USB Serial/JTAG occasionally drops
  a byte; recv_exact then blocked in getchar() forever (0x03 could not break
  it out), wedging the device until a physical reset.
- recv path now reads with a 2 s per-byte timeout (new prr_getchar_timeout on
  all platforms); a dropped byte aborts with "ERROR recv" and returns to READY,
  so the next run recovers without a reset.
- C6 USB Serial/JTAG RX ring enlarged 256 B -> 4096 B to prevent the drop.
- Verified on hardware: deterministic truncated-payload test recovers in ~2 s;
  200 tight 4.3 KB cycles with zero drops (previously wedged within 1-94).

Release: VERSION 0.2.1, CHANGELOG, README, Gemfile.lock.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

v0.2.0

Toggle v0.2.0's commit message
release: v0.2.0 — ESP32 support; samples reorganized into pico/ and e…

…sp32/

ESP32 (WiFi / NTP / LCD) support is the headline feature, so bump the
minor version instead of 0.1.8. Pico / Pico W samples move from
test/samples/ into test/samples/pico/, mirroring test/samples/esp32/.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

runtime-0.2.0

Toggle runtime-0.2.0's commit message
Added Integer.zero? method.

v0.1.7

Toggle v0.1.7's commit message
Disable Style/RegexpLiteral RuboCop cop

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

v0.1.6

Toggle v0.1.6's commit message
Release v0.1.6: restructure CYW43 WiFi API into CYW43::WiFi namespace

- Move WiFi methods into CYW43::WiFi sub-module (connect, disconnect,
  link_status, ipv4_address/netmask/gateway) to prepare for future
  CYW43::BT (Bluetooth) support
- Rename connect_timeout → CYW43::WiFi.connect; enable_sta_mode is now
  called internally so callers no longer need to invoke it explicitly
- Add CYW43::WiFi::ConnectError for authentication failures, distinct
  from CYW43::WiFi::ConnectTimeout for timeouts
- Add CYW43::WiFi::LINK_* constants (from cyw43_ll.h)
- Fix misleading comment: ConnectTimeout was not taken from picoruby-cyw43
- Update test/samples/wifi.rb to use new API

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

runtime-0.1.7

Toggle runtime-0.1.7's commit message
fixed typo.

runtime-0.1.6

Toggle runtime-0.1.6's commit message
Fix RuboCop offense and update test for \x03 sent on port open

Disable Style/RescueModifier for the intentional rescue nil pattern.
Update LsCommandTest to expect \x03 prepended to QURY in written bytes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>