<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/go-1-27-s-simd-experiment-is-already-beating-rust-at-chacha20-nrfblhjhr" -->

---
title: Go 1.27&#x27;s SIMD experiment is already beating Rust at...
description: Go 1.27 arrived with generic methods, nested-field struct literal keys, broader function type inference, size-specialized allocation cutting small-object costs...
canonical: https://daily.dev/posts/go-1-27-s-simd-experiment-is-already-beating-rust-at-chacha20-nrfblhjhr
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Go 1.27&#x27;s SIMD experiment is already beating Rust at ChaCha20 | daily.dev
og:description: Go 1.27 arrived with generic methods, nested-field struct literal keys, broader function type inference, size-specialized allocation cutting small-object costs...
og:url: https://daily.dev/posts/go-1-27-s-simd-experiment-is-already-beating-rust-at-chacha20-nrfblhjhr
og:image: https://api.daily.dev/og/posts/nRfBLhjHr.png
og:image:alt: Go 1.27&#x27;s SIMD experiment is already beating Rust at ChaCha20
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's SIMD experiment is already beating Rust at ChaCha20

**[Trends](https://daily.dev/sources/trends)** · 2 min read · 37 upvotes · 3 comments

## Summary

Go 1.27 arrived with generic methods, nested-field struct literal keys, broader function type inference, size-specialized allocation cutting small-object costs by up to 30%, a GA goroutine-leak profiler, encoding/json/v2, crypto/mldsa, a native uuid package, and an in-memory fake network for httptest. But the real buzz is the experimental SIMD support (still gated behind GOEXPERIMENT=simd): a portable simd package and a lower-level archsimd package with AVX512, Arm Neon, and WebAssembly 128-bit support. One developer implemented SIMD-accelerated ChaCha20 encryption and measured up to 7.5x speedup over the stdlib implementation on an AMD EPYC Zen5/AVX512 machine, edging out an equivalent Rust implementation. The portable simd package couldn't handle ChaCha20's platform-specific rotation instructions, forcing a drop to the low-level archsimd package; gaps remain, including no SIMD arrays and some missing instructions.

## Content

Go 1.27 shipped this week, and the release notes are genuinely impressive. But the most interesting thing isn't what's in the release — it's the argument it's already started.

**What landed**

The headline features: generic methods (methods can now declare their own type parameters, not just inherit the receiver's), smarter type inference across assignment contexts, and struct literals that accept nested field selectors as keys. Runtime gets a size-specialized allocator for objects under 80 bytes, cutting small-object allocation costs by up to 30% — roughly 1% overall speedup with zero code changes. Standard library adds a native UUID package, `encoding/json/v2` (stricter defaults, old `encoding/json` now runs on top of it for free perf gains), post-quantum ML-DSA signatures in `crypto/mldsa`, and experimental SIMD support via a portable vector package plus a lower-level `arch/simd` for per-instruction control.

The SIMD story is already getting real-world validation. One engineer implemented SIMD-accelerated ChaCha20 encryption using the new packages and hit a 7.5x speedup over stdlib on AMD EPYC Zen5 with AVX512 — slightly faster than an equivalent Rust implementation. That's not a benchmark toy; that's the kind of number that makes people pay attention.

**The fight**

Here's where it gets interesting. ThePrimeagen and VictoriaMetrics founder Aliaksandr Valialkin are pushing back on the generics expansion, arguing it chips away at the thing that made Go worth using in the first place: you could read anyone's Go code and understand it immediately. More abstraction means more cognitive overhead, and Go's whole pitch was that it didn't do that to you.

The counter-argument — and this is the part that's going to keep coming up — is that Google engineers are framing readability as *more* important now, not less, precisely because AI is writing more of the code. When agents generate the implementation and humans mainly review it, simpler and more explicit beats clever and abstract. Generic methods cut repetitive boilerplate, which sounds like a win, but whether that makes AI-generated Go easier or harder to audit is genuinely unclear.

JetBrains already updated GoLand 2026.2 to support the new syntax on day one, and they've updated their Modern Go Code Guidelines repo so AI agents generate 1.27-idiomatic code. Which is either reassuring or exactly the thing the readability crowd is worried about, depending on where you sit.

## Questions this post answers

### What new SIMD packages does Go 1.27 include?

Go 1.27 ships two experimental SIMD packages gated behind GOEXPERIMENT=simd: a portable, vector-size-agnostic simd package, and a lower-level simd/archsimd package offering per-instruction control similar to Rust intrinsics, with AVX512 API revisions plus Arm Neon 128-bit and WebAssembly 128-bit support.

_Track Go's evolving SIMD support on daily.dev before betting a performance-critical rewrite on it._

### How much faster was a SIMD-accelerated ChaCha20 implementation in Go compared to the standard library?

A SIMD-accelerated ChaCha20 implementation using Go 1.27's archsimd package measured up to 7.5x faster performance than the stdlib ChaCha20 implementation, tested on an AMD EPYC Zen5 machine with AVX512, and came in slightly faster than an equivalent Rust implementation.

_Developers benchmarking crypto performance across languages can follow results like this on daily.dev._

### Why couldn't Go's portable simd package handle ChaCha20 encryption directly?

The high-level portable simd package could not implement ChaCha20's rotation logic because the required rotation instructions are platform-specific, so the work had to move to the low-level archsimd package, which provided AVX512 quarter-round and transpose implementations to get the job done.

_Anyone weighing Go's SIMD abstractions against lower-level control can follow this gap on daily.dev._

## Community take

How the wider developer community reacted, aggregated from 2 discussions and 117 comments across lobsters, hackernews (as of 2026-08-26).

**TL;DR:** Developers are largely enthusiastic about generic methods, struct literal improvements, the new uuid package, and SIMD/JSON performance gains, while a sizable tangent debates Go's lack of syntax highlighting on go.dev and whether the language is drifting from its 'simple' roots by adding more features.

**Sentiment:** 45% positive · 35% mixed · 20% skeptical

**The case for**

- Generic methods and improved type inference fix real ergonomic pain points developers had hit in practice.
- The new struct literal nested field selector syntax is seen as a nice quality-of-life win, especially for code generators producing nested structs.
- The native uuid package is welcomed as overdue, with people already swapping it in for google/uuid.
- SIMD support is reported to work impressively well, even enabling LLM-assisted scalar-to-SIMD porting.
- Post-quantum crypto (mldsa) work is praised as proactive and well-timed.

**The pushback**

- Some feel Go is drifting from its original simplicity toward a 'Java/C# Frankenstein' of accumulating features.
- The uuid struct doesn't implement the interface needed for direct DB scanning, forcing continued use of google/uuid or plain strings in some cases.
- golangci-lint and gopls initially appeared broken with generic methods (though this turned out to be a stale gopls install).
- Frustration that go.dev still doesn't support syntax highlighting in code blocks, a long-standing stylistic choice tied to Rob Pike's personal preference.

**By community**

- lobsters (mixed): Minimal discussion, just links to release notes and a third-party tour of the release.
- hackernews (mixed): Mostly positive about concrete feature wins like generics, uuid, and SIMD, but with a heated tangent over syntax highlighting and recurring skepticism about feature creep.

**Hottest debate:** Whether go.dev's refusal to add syntax highlighting to code blocks (attributed to a personal preference of Rob Pike's) is a reasonable stance or an outdated relic imposed on the whole community.

**Open questions**

- Will 'go fix' or tooling automatically migrate code from google/uuid to the new standard uuid package?
- Does the new uuid.UUID type get proper database/sql scanning support without extra methods?
- Will Go eventually add native discriminated unions/algebraic data types?

**Highlights**

> There's a reason for this.  Rob Pike was asked about it and said that syntax highlighting reminds him of the bright colors of children's toys and he personally disables it so that he can focus on the text. I don't know why it's still like that but that's the original reasoning.
> — [treyd on hackernews · 5 comments](https://news.ycombinator.com/item?id=49367615)

> That’s an interesting point. The reason traffic lights are colored is because they are showing distinct states of the same thing and the color is the means of differentiating. Same for transit maps: different routes are colored to distinguish them from other routes, which is especially useful if they overlap. But that’s not what syntax highlighting does. The equivalent of your examples would be to not highlight the syntax at all, but only use color coding to distinguish variables. The equivalent of how syntax highlighting works for your examples would be if the light fixture was one color, and the light pole was another, but then all the actual lights were the same color. I actually think highlighting only the variables with distinct colors could be extremely valuable. Would certainly help avoid mistakes with nested i/j loop counters.
> — [abtinf on hackernews · 1 comments](https://news.ycombinator.com/item?id=49368138)

> Brace for a wave of drive-by pull-requests swapping google/uuid [1] out for the now-standard uuid package [2]. Kubernetes project will be the first one [3] I guarantee it. [1] https://pkg.go.dev/github.com/google/uuid [2] https://go.dev/pkg/uuid [3] https://github.com/kubernetes/kubernetes/blob/2220c3853a2402... [4] https://github.com/google/uuid/issues/221
> — [guessmyname on hackernews · 2 comments](https://news.ycombinator.com/item?id=49366524)

> > almost seems like Go is trying to become some sort of C# or Java Frankenstein The original Go team was trying to avoid this: "Java, JavaScript (ECMAScript), Typescript, C#, C++, Hack (PHP), and more [...] actively borrow features from one another. They are converging into a single huge language." [0] That team has since moved on, and now Go has begun to join that convergence. The problem is that most programmers seem to want to write Java, more-or-less. New, simpler languages come along, but once they get popular, the pressure is on to turn them into Java-likes. It happened to Python and now it’s happening to Go. It takes a strong will for language maintainers to say “no”, and their language will suffer in popularity as a result - see, for example, Ruby. [0] https://go.dev/talks/2015/simplicity-is-complicated.slide#5
> — [pansa2 on hackernews](https://news.ycombinator.com/item?id=49368402)

> Wasn't Go supposed to be "simple"? I remember how Go advocates used to boast about not having generics and now it almost seems like Go is trying to become some sort of C# or Java Frankenstein. I'm not even trying to badmouth Golang - just legitimately confused.
> — [pregnenolone on hackernews · 2 comments](https://news.ycombinator.com/item?id=49366849)

**Source threads**

- [lobsters](https://lobste.rs/s/smrw3n/go_1_27_is_released) · 26 points · 2 comments
- [hackernews](https://news.ycombinator.com/item?id=49365405) · 179 points · 115 comments

## Community discussion

Top comments from developers on daily.dev.

**@trevorsuna** · 7 upvotes

> A 7.5x result is exciting, but the CPU-specific details are the interesting part—not the language scoreboard. Portable fallbacks, constant-time behavior, and benchmarks across architectures will matter most if this reaches real cryptographic workloads.

**@agustinbarrientos** · 1 upvotes

> Go beat Rust and vectorized the comment section too

---

Tags: [#performance](https://daily.dev/tags/performance), [#golang](https://daily.dev/tags/golang), [#rust](https://daily.dev/tags/rust), [#cryptography](https://daily.dev/tags/cryptography)

[View this post on daily.dev](https://daily.dev/posts/go-1-27-s-simd-experiment-is-already-beating-rust-at-chacha20-nrfblhjhr)

```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's SIMD experiment is already beating Rust at ChaCha20","url":"https://daily.dev/posts/go-1-27-s-simd-experiment-is-already-beating-rust-at-chacha20-nrfblhjhr","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/go-1-27-s-simd-experiment-is-already-beating-rust-at-chacha20-nrfblhjhr"},"datePublished":"2026-08-19T20:00:09.445Z","dateModified":"2026-08-26T09:14:14.349Z","description":"Go 1.27 arrived with generic methods, nested-field struct literal keys, broader function type inference, size-specialized allocation cutting small-object costs...","isAccessibleForFree":true,"articleSection":"Trends","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":"Trends","logo":"https://media.daily.dev/image/upload/s--ZfSp3asX--/f_auto,q_auto/v1780996004/logos/trends?_a=BAMAMiWQ0","url":"https://daily.dev/sources/trends"},"commentCount":3,"discussionUrl":"https://daily.dev/posts/go-1-27-s-simd-experiment-is-already-beating-rust-at-chacha20-nrfblhjhr","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":37},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":3}],"keywords":"performance,golang,rust,cryptography","timeRequired":"PT2M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Trends","item":"https://daily.dev/sources/trends"},{"@type":"ListItem","position":3,"name":"Go 1.27's SIMD experiment is already beating Rust at ChaCha20"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/go-1-27-s-simd-experiment-is-already-beating-rust-at-chacha20-nrfblhjhr","comment":[{"@type":"Comment","text":"A 7.5x result is exciting, but the CPU-specific details are the interesting part—not the language scoreboard. Portable fallbacks, constant-time behavior, and benchmarks across architectures will matter most if this reaches real cryptographic workloads.","datePublished":"2026-08-20T04:11:50.796Z","url":"https://daily.dev/posts/nRfBLhjHr#c-XOxsC5Zvn","author":{"@type":"Person","name":"Trevor Suna","url":"https://daily.dev/trevorsuna","image":"https://media.daily.dev/image/upload/s--dZ7gXxpp--/f_auto/v1784081551/avatars/avatar_EMoP47rpuw8DNjhp6R1b6?_a=BAMAMicg0"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":7}},{"@type":"Comment","text":"Go beat Rust and vectorized the comment section too","datePublished":"2026-08-21T08:10:17.671Z","url":"https://daily.dev/posts/nRfBLhjHr#c-WcJCkVY0v","author":{"@type":"Person","name":"Agustin Barrientos","url":"https://daily.dev/agustinbarrientos","image":"https://media.daily.dev/image/upload/s--5ayxQnqn--/f_auto/v1788281802/avatars/avatar_wQYYVe5Tbj0NJ7C7qPoa8?_a=BAMAMicg0"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/go-1-27-s-simd-experiment-is-already-beating-rust-at-chacha20-nrfblhjhr#faq","mainEntity":[{"@type":"Question","name":"What new SIMD packages does Go 1.27 include?","acceptedAnswer":{"@type":"Answer","text":"Go 1.27 ships two experimental SIMD packages gated behind GOEXPERIMENT=simd: a portable, vector-size-agnostic simd package, and a lower-level simd/archsimd package offering per-instruction control similar to Rust intrinsics, with AVX512 API revisions plus Arm Neon 128-bit and WebAssembly 128-bit support. Track Go's evolving SIMD support on daily.dev before betting a performance-critical rewrite on it."}},{"@type":"Question","name":"How much faster was a SIMD-accelerated ChaCha20 implementation in Go compared to the standard library?","acceptedAnswer":{"@type":"Answer","text":"A SIMD-accelerated ChaCha20 implementation using Go 1.27's archsimd package measured up to 7.5x faster performance than the stdlib ChaCha20 implementation, tested on an AMD EPYC Zen5 machine with AVX512, and came in slightly faster than an equivalent Rust implementation. Developers benchmarking crypto performance across languages can follow results like this on daily.dev."}},{"@type":"Question","name":"Why couldn't Go's portable simd package handle ChaCha20 encryption directly?","acceptedAnswer":{"@type":"Answer","text":"The high-level portable simd package could not implement ChaCha20's rotation logic because the required rotation instructions are platform-specific, so the work had to move to the low-level archsimd package, which provided AVX512 quarter-round and transpose implementations to get the job done. Anyone weighing Go's SIMD abstractions against lower-level control can follow this gap on daily.dev."}}]}
```

