<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/go-1-27-goroutine-leak-profiler-faster-json-and-tinygo-now-boots-before-your-os-wxlpar2zn" -->

---
title: Go 1.27: goroutine leak profiler, faster JSON, and...
description: Go 1.27 shipped August 19, 2026 with a now-stable goroutine leak profiler exposed at /debug/pprof/goroutineleak, replacing the 1.26 experimental flag....
canonical: https://daily.dev/posts/go-1-27-goroutine-leak-profiler-faster-json-and-tinygo-now-boots-before-your-os-wxlpar2zn
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Go 1.27: goroutine leak profiler, faster JSON, and TinyGo now boots before your OS | daily.dev
og:description: Go 1.27 shipped August 19, 2026 with a now-stable goroutine leak profiler exposed at /debug/pprof/goroutineleak, replacing the 1.26 experimental flag....
og:url: https://daily.dev/posts/go-1-27-goroutine-leak-profiler-faster-json-and-tinygo-now-boots-before-your-os-wxlpar2zn
og:image: https://api.daily.dev/og/posts/WxLpAR2ZN.png
og:image:alt: Go 1.27: goroutine leak profiler, faster JSON, and TinyGo now boots before your OS
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.

# Go 1.27: goroutine leak profiler, faster JSON, and TinyGo now boots before your OS

**[Collections](https://daily.dev/sources/collections)** · 3 min read · 22 upvotes · 0 comments

## Summary

Go 1.27 shipped August 19, 2026 with a now-stable goroutine leak profiler exposed at /debug/pprof/goroutineleak, replacing the 1.26 experimental flag. encoding/json is now backed internally by encoding/json/v2, making unmarshalling notably faster while some struct-slice marshalling gets slower; a separate stricter encoding/json/v2 package rejects invalid UTF-8 and duplicate keys. Size-specialized allocation cuts sub-80-byte allocations by up to 30% for roughly 1% overall gains at the cost of about 60KB binary size. Other changes include goroutine labels in tracebacks, go tool trace binding to localhost only by default, HTTP/1 response body draining on close, and post-quantum crypto/mldsa support. Separately, TinyGo 0.42 adds working panic recovery, an experimental UEFI boot target letting Go run before the OS loads, and Go 1.27 support. Library releases include AWS Lambda for Go 1.55, GoReleaser 2.18, quic-go 0.62, and Miniredis 2.39.

## Content

Go 1.27 shipped August 19, 2026, and the release notes are dense enough that it's easy to miss what matters in production. Here's a practical rundown.

## Goroutine leak profiler is now stable

The goroutine leak profiler moves from experimental to generally available in `runtime/pprof`. It's exposed at `/debug/pprof/goroutineleak`. The 1.26 experiment flag is gone, so if you were gating on that, update your code.

## JSON gets faster (and stricter, if you want)

`encoding/json` is now backed by the v2 engine internally, but keeps v1 behavior by default. Unmarshal gets meaningfully faster; marshal on typed struct slices is slightly slower in some benchmarks. If you want the stricter mode - rejecting invalid UTF-8, duplicate keys, case-sensitive field matching, and opt-in deterministic map key sorting - import `encoding/json/v2` explicitly.

For teams already using third-party JSON libraries, a benchmark on a ~2KB struct payload across `encoding/json`, `encoding/json/v2`, `jsoniter`, `easyjson`, `sonic`, and `gjson` (tested on Apple M5 and AMD EPYC) found that `easyjson` wins on both decode and encode due to code generation avoiding reflection entirely. `sonic` offers a 10-16% decode edge over the standard library. The new v2 engine is a real improvement but doesn't close the gap with the fastest third-party options.

## Memory allocation improvements

Size-specialized allocation cuts some sub-80-byte allocations by up to 30%, translating to roughly a 1% overall gain in allocation-heavy programs. The tradeoff is about 60KB of additional binary size.

## Language changes

**Generic methods** can now declare their own type parameters separately from the receiver's. This still doesn't work on interfaces.

**Struct literals** gain field selectors for promoted embedded fields, so you no longer need to nest the embedded type name explicitly.

**UUID package** is now in the standard library, removing the need for `github.com/google/uuid` or similar.

## Crypto and security

Post-quantum ML-DSA signature support lands in `crypto/mldsa`. There's also a Microsoft build fix (1.27.1-2) for a panic that could occur when using OpenSSL 3.3 alongside a provider implementing ML-KEM or ML-DSA - relevant if you're running on Azure Linux 3.

## Smaller additions worth knowing

- **`strings.CutLast`** splits on the last occurrence of a separator
- **`math/big`** gets rounding-mode-aware integer division
- **`synctest.Sleep`** helper for testing time-dependent code
- **In-memory `httptest` server** for tests that don't need a real listener
- **`time/ticker` channels** are now always unbuffered
- **`go mod tidy`** collapses require blocks
- **Goroutine labels** now appear in tracebacks
- **`go tool trace`** listen address is restricted to localhost by default
- **HTTP/1 response bodies** are drained on close
- **SIMD support** is still experimental behind `GOEXPERIMENT=simd`
- **Shared `Hasher` interface** for generic hashing (useful for bloom filters and custom hash sets)
- **Bounded random number generation** added as a method

## TinyGo 0.42

On the embedded side, TinyGo 0.42 adds working panic recovery, an early UEFI boot target (Go code running before your OS does), and Go 1.27 support.

## What to actually prioritize

The goroutine leak profiler is the most immediately useful change for production services - it's stable, it's free to enable, and goroutine leaks are notoriously hard to catch otherwise. The JSON speedup is real but whether it matters depends on your workload; if you're already on `easyjson` or `sonic`, you probably won't switch back. The memory allocation improvements are passive gains you get for free.

## Questions this post answers

### What's new in the goroutine leak profiler in Go 1.27?

The goroutine leak profiler, experimental in Go 1.26, is now stable and generally available in runtime/pprof, exposed at the /debug/pprof/goroutineleak endpoint. The old experiment flag from 1.26 has been removed, so code relying on that flag needs to be updated to use the new stable endpoint instead.

_Teams tracking goroutine leaks in production can follow Go runtime changes like this on daily.dev._

### Does Go 1.27 make encoding/json faster or slower?

It depends on the operation: encoding/json in Go 1.27 is now backed internally by encoding/json/v2, making unmarshalling significantly faster, but marshalling typed struct slices can actually be slower in some cases. A separate encoding/json/v2 package is also available with stricter defaults that reject invalid UTF-8 and duplicate keys, unlike v1.

_Anyone benchmarking JSON performance before upgrading can track Go release tradeoffs like this on daily.dev._

### Can TinyGo boot before an operating system loads?

Yes, TinyGo 0.42 adds an early, experimental UEFI boot target, meaning Go code compiled with TinyGo can run before the operating system loads, useful for embedded and firmware use cases. TinyGo 0.42 also adds working panic recovery and support for Go 1.27.

_Developers exploring embedded and firmware use cases can follow TinyGo's progress on daily.dev._

## Similar posts on daily.dev

- [Go 1.27 interactive tour](https://daily.dev/posts/go-1-27-interactive-tour-dvxr0krfs) · Lobsters · 11 upvotes · 0 comments

---

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

[View this post on daily.dev](https://daily.dev/posts/go-1-27-goroutine-leak-profiler-faster-json-and-tinygo-now-boots-before-your-os-wxlpar2zn)

```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":"Go 1.27: goroutine leak profiler, faster JSON, and TinyGo now boots before your OS","url":"https://daily.dev/posts/go-1-27-goroutine-leak-profiler-faster-json-and-tinygo-now-boots-before-your-os-wxlpar2zn","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/go-1-27-goroutine-leak-profiler-faster-json-and-tinygo-now-boots-before-your-os-wxlpar2zn"},"datePublished":"2026-09-04T14:35:02.693Z","dateModified":"2026-09-10T20:35:56.194Z","description":"Go 1.27 shipped August 19, 2026 with a now-stable goroutine leak profiler exposed at /debug/pprof/goroutineleak, replacing the 1.26 experimental flag....","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/030a1b89a749d94d42af3e32d6053cc3?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/030a1b89a749d94d42af3e32d6053cc3?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Collections","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":"Collections","logo":"https://media.daily.dev/image/upload/s--fk_6ycEi--/f_auto,q_auto/v1780996001/logos/collections?_a=BAMAMiWQ0","url":"https://daily.dev/sources/collections"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/go-1-27-goroutine-leak-profiler-faster-json-and-tinygo-now-boots-before-your-os-wxlpar2zn","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":22},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"golang","timeRequired":"PT3M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Collections","item":"https://daily.dev/sources/collections"},{"@type":"ListItem","position":3,"name":"Go 1.27: goroutine leak profiler, faster JSON, and TinyGo now boots before your OS"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/go-1-27-goroutine-leak-profiler-faster-json-and-tinygo-now-boots-before-your-os-wxlpar2zn#faq","mainEntity":[{"@type":"Question","name":"What's new in the goroutine leak profiler in Go 1.27?","acceptedAnswer":{"@type":"Answer","text":"The goroutine leak profiler, experimental in Go 1.26, is now stable and generally available in runtime/pprof, exposed at the /debug/pprof/goroutineleak endpoint. The old experiment flag from 1.26 has been removed, so code relying on that flag needs to be updated to use the new stable endpoint instead. Teams tracking goroutine leaks in production can follow Go runtime changes like this on daily.dev."}},{"@type":"Question","name":"Does Go 1.27 make encoding/json faster or slower?","acceptedAnswer":{"@type":"Answer","text":"It depends on the operation: encoding/json in Go 1.27 is now backed internally by encoding/json/v2, making unmarshalling significantly faster, but marshalling typed struct slices can actually be slower in some cases. A separate encoding/json/v2 package is also available with stricter defaults that reject invalid UTF-8 and duplicate keys, unlike v1. Anyone benchmarking JSON performance before upgrading can track Go release tradeoffs like this on daily.dev."}},{"@type":"Question","name":"Can TinyGo boot before an operating system loads?","acceptedAnswer":{"@type":"Answer","text":"Yes, TinyGo 0.42 adds an early, experimental UEFI boot target, meaning Go code compiled with TinyGo can run before the operating system loads, useful for embedded and firmware use cases. TinyGo 0.42 also adds working panic recovery and support for Go 1.27. Developers exploring embedded and firmware use cases can follow TinyGo's progress on daily.dev."}}]}
```

