<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/tinygo-0-42---recover-is-real-n17nd7ldl" -->

---
title: TinyGo 0.42 - Recover Is Real | daily.dev
description: TinyGo 0.42 has shipped, closing a long-standing gap with mainline Go by making runtime panics (nil pointer dereferences, divide by zero, out-of-range...
canonical: https://daily.dev/posts/tinygo-0-42---recover-is-real-n17nd7ldl
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: TinyGo 0.42 - Recover Is Real | daily.dev
og:description: TinyGo 0.42 has shipped, closing a long-standing gap with mainline Go by making runtime panics (nil pointer dereferences, divide by zero, out-of-range...
og:url: https://daily.dev/posts/tinygo-0-42---recover-is-real-n17nd7ldl
og:image: https://api.daily.dev/og/posts/n17ND7ldL.png
og:image:alt: TinyGo 0.42 - Recover Is Real
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# TinyGo 0.42 - Recover Is Real

**[Lobsters](https://daily.dev/sources/lobsters)** · 4 min read · 0 upvotes · 0 comments

## Summary

TinyGo 0.42 has shipped, closing a long-standing gap with mainline Go by making runtime panics (nil pointer dereferences, divide by zero, out-of-range slice/map access, channel panics) recoverable via defer and recover, including on Windows and riscv64. The release adds Go 1.27 support, moves builds to LLVM 22 while retaining LLVM 19/20 compatibility, and introduces a minimal UEFI target letting Go programs run as pre-boot applications. ESP32 support expands with interrupts, ADC, WiFi, and Bluetooth; STM32 gains new chip and board support; USB handling improves across several boards.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://tinygo.org/blog/2026/tinygo-0.42-recover-is-real>

## Questions this post answers

### Can TinyGo recover from a nil pointer dereference or divide by zero panic now?

Yes, as of TinyGo 0.42, runtime panics including nil pointer dereferences, divide by zero, out-of-range slice and map operations, and channel panics can all be recovered using defer and recover, matching standard Go behavior. This works on Windows through a new vectored exception handler and on riscv64 as well. Fatal errors like out-of-memory conditions remain unrecoverable.

_Track TinyGo runtime changes like this on daily.dev before upgrading embedded Go projects._

### Does TinyGo support Go 1.27 features like generic methods?

Yes, TinyGo 0.42 adds support for Go 1.27, with release binaries built and tested against it. Generic methods, a new feature in Go 1.27, are supported through an upgraded golang.org/x/tools dependency. TinyGo also moved its own builds to LLVM 22 while keeping LLVM 19 and 20 working for distribution package builds.

_Developers tracking Go version compatibility for embedded targets can follow updates like this on daily.dev._

### Can I run a Go program as a UEFI application before the operating system boots?

Yes, TinyGo 0.42 introduces a minimal UEFI target that lets a Go program be compiled and run as a UEFI application before any operating system starts. It supports UEFI time and events and uses a task scheduler by default so goroutines function. This is described as early-stage work with more development planned.

_Follow emerging low-level Go capabilities like UEFI targeting on daily.dev._

## Similar posts on daily.dev

- [TinyGo Boldly Goes Where No Go Ever Did Go Before](https://daily.dev/posts/tinygo-boldly-goes-where-no-go-ever-did-go-before-w2ipciafl) · Hackaday · 34 upvotes · 1 comments

---

Tags: [#golang](https://daily.dev/tags/golang), [#iot](https://daily.dev/tags/iot), [#embedded](https://daily.dev/tags/embedded)

[View this post on daily.dev](https://daily.dev/posts/tinygo-0-42---recover-is-real-n17nd7ldl)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"TinyGo 0.42 - Recover Is Real","url":"https://daily.dev/posts/tinygo-0-42---recover-is-real-n17nd7ldl","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/tinygo-0-42---recover-is-real-n17nd7ldl"},"datePublished":"2026-09-03T03:07:56.530Z","dateModified":"2026-09-04T08:04:28.858Z","description":"TinyGo 0.42 has shipped, closing a long-standing gap with mainline Go by making runtime panics (nil pointer dereferences, divide by zero, out-of-range...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/ba42b7901833cfa4b33047a584c8abd4?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/ba42b7901833cfa4b33047a584c8abd4?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Lobsters","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Lobsters","logo":"https://media.daily.dev/image/upload/s--tl8v_Fku--/f_auto,t_logo/v1698841318/logos/lobste.jpg","url":"https://daily.dev/sources/lobsters"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/tinygo-0-42---recover-is-real-n17nd7ldl","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"golang,iot,embedded","timeRequired":"PT4M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Lobsters","item":"https://daily.dev/sources/lobsters"},{"@type":"ListItem","position":3,"name":"TinyGo 0.42 - Recover Is Real"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/tinygo-0-42---recover-is-real-n17nd7ldl#faq","mainEntity":[{"@type":"Question","name":"Can TinyGo recover from a nil pointer dereference or divide by zero panic now?","acceptedAnswer":{"@type":"Answer","text":"Yes, as of TinyGo 0.42, runtime panics including nil pointer dereferences, divide by zero, out-of-range slice and map operations, and channel panics can all be recovered using defer and recover, matching standard Go behavior. This works on Windows through a new vectored exception handler and on riscv64 as well. Fatal errors like out-of-memory conditions remain unrecoverable. Track TinyGo runtime changes like this on daily.dev before upgrading embedded Go projects."}},{"@type":"Question","name":"Does TinyGo support Go 1.27 features like generic methods?","acceptedAnswer":{"@type":"Answer","text":"Yes, TinyGo 0.42 adds support for Go 1.27, with release binaries built and tested against it. Generic methods, a new feature in Go 1.27, are supported through an upgraded golang.org/x/tools dependency. TinyGo also moved its own builds to LLVM 22 while keeping LLVM 19 and 20 working for distribution package builds. Developers tracking Go version compatibility for embedded targets can follow updates like this on daily.dev."}},{"@type":"Question","name":"Can I run a Go program as a UEFI application before the operating system boots?","acceptedAnswer":{"@type":"Answer","text":"Yes, TinyGo 0.42 introduces a minimal UEFI target that lets a Go program be compiled and run as a UEFI application before any operating system starts. It supports UEFI time and events and uses a task scheduler by default so goroutines function. This is described as early-stage work with more development planned. Follow emerging low-level Go capabilities like UEFI targeting on daily.dev."}}]}
```

