# Latest

**URL:** https://forum.crystal-lang.org/latest.md

[Latest](https://forum.crystal-lang.org/latest.md) · [Categories](https://forum.crystal-lang.org/categories.md) · [Tags](https://forum.crystal-lang.org/tags.md)

---

## [Welcome to the Crystal Forum](https://forum.crystal-lang.org/t/welcome-to-the-crystal-forum/7)

<div class="topic-metadata">

**Author:** [@system](https://forum.crystal-lang.org/u/system)\
**Replies:** 0\
**Last updated:** [December 4, 2018, 1:54pm UTC](https://forum.crystal-lang.org/t/welcome-to-the-crystal-forum/7 "2018-12-04T13:54:16Z")

</div>

Welcome to The Crystal Forum! Keep in touch with the community and the core team. Share experience, find support, help Crystal to move forward. Newcomers to the language are welcome in the forum. We prepare the followi…

---

## [Variables in loops](https://forum.crystal-lang.org/t/variables-in-loops/9163)

<div class="topic-metadata">

**Author:** [@Carlos](https://forum.crystal-lang.org/u/Carlos)\
**Replies:** 1\
**Last updated:** [September 22, 2026, 8:17pm UTC](https://forum.crystal-lang.org/t/variables-in-loops/9163 "2026-09-22T20:17:52Z")

</div>

Take a look at the silly example: 2.times do |i| x = uninitialized Int32 if x == 50 puts "x = 50, i = #{i}" puts " (by chance!)" if i == 0 end x = 50 end Is x created anew on each iteration, and by chan…

---

## [Spinel - Experimental Ruby Compiler for Standalone Executables](https://forum.crystal-lang.org/t/spinel-experimental-ruby-compiler-for-standalone-executables/8922)

<div class="topic-metadata">

**Author:** [@Kritoke](https://forum.crystal-lang.org/u/Kritoke)\
**Replies:** 7\
**Last updated:** [September 22, 2026, 6:44pm UTC](https://forum.crystal-lang.org/t/spinel-experimental-ruby-compiler-for-standalone-executables/8922 "2026-09-22T18:44:06Z")

</div>

Just ran across the new experimental compiler Matz is working on that compiles Ruby to standalone executables. Sounds pretty performant but it’s very early days. Anyone play with it yet? GitHub - matz/spinel · GitHub k…

---

## [Performance is weird](https://forum.crystal-lang.org/t/performance-is-weird/9162)

<div class="topic-metadata">

**Author:** [@ralsina](https://forum.crystal-lang.org/u/ralsina)\
**Replies:** 8\
**Last updated:** [September 22, 2026, 2:50pm UTC](https://forum.crystal-lang.org/t/performance-is-weird/9162 "2026-09-22T14:50:03Z")

</div>

I have a lot of performance data about tartrazine since it’s a project with a very deterministic output on which I have done extensive performance work, and it’s very easy to benchmark. I wanted to get a historic perf b…

---

## [A small experiment on Crystal performance](https://forum.crystal-lang.org/t/a-small-experiment-on-crystal-performance/9114)

<div class="topic-metadata">

**Author:** [@ralsina](https://forum.crystal-lang.org/u/ralsina)\
**Replies:** 21\
**Last updated:** [September 21, 2026, 3:50am UTC](https://forum.crystal-lang.org/t/a-small-experiment-on-crystal-performance/9114 "2026-09-21T03:50:20Z")

</div>

Yesterday I ran into smallpt, a tiny raytracer in 100LOC in C++. It turns out it works as a nice cross-lang CPU benchmark! So I ported it to crystal and ran some benchmarks comparing with other implementations and … wel…

---

## [Chronicle v0.1.0: Telemetry harvester and context engine for Wayland and AI agents](https://forum.crystal-lang.org/t/chronicle-v0-1-0-telemetry-harvester-and-context-engine-for-wayland-and-ai-agents/9159)

<div class="topic-metadata">

**Author:** [@renich](https://forum.crystal-lang.org/u/renich)\
**Replies:** 4\
**Last updated:** [September 21, 2026, 2:13am UTC](https://forum.crystal-lang.org/t/chronicle-v0-1-0-telemetry-harvester-and-context-engine-for-wayland-and-ai-agents/9159 "2026-09-21T02:13:19Z")

</div>

Hello everyone, I’ve tagged the initial v0.1.0 release of Chronicle, a local, privacy-first telemetry daemon and context correlation engine written in Crystal. The Problem When pair programming with AI agents or conduc…

---

## [\[RFC\] crinit: Pluggable filesystem-driven template engine for Crystal (upstream crystal init evolution)](https://forum.crystal-lang.org/t/rfc-crinit-pluggable-filesystem-driven-template-engine-for-crystal-upstream-crystal-init-evolution/9156)

<div class="topic-metadata">

**Author:** [@renich](https://forum.crystal-lang.org/u/renich)\
**Replies:** 2\
**Last updated:** [September 20, 2026, 6:40pm UTC](https://forum.crystal-lang.org/t/rfc-crinit-pluggable-filesystem-driven-template-engine-for-crystal-upstream-crystal-init-evolution/9156 "2026-09-20T18:40:02Z")

</div>

Hi everyone, Currently, crystal init app and crystal init lib generate hardcoded skeletons embedded in compiler macros. While fine for getting started, real-world projects invariably require customized scaffolding: doma…

---

## [Collaboration in the age of AI](https://forum.crystal-lang.org/t/collaboration-in-the-age-of-ai/9051)

<div class="topic-metadata">

**Author:** [@renich](https://forum.crystal-lang.org/u/renich)\
**Replies:** 8\
**Last updated:** [September 20, 2026, 6:39pm UTC](https://forum.crystal-lang.org/t/collaboration-in-the-age-of-ai/9051 "2026-09-20T18:39:02Z")

</div>

One of my main goals with AI has been to get collaboration right. It’s very easy to withdraw and try to do it all on one’s own so I’ve tried hard to avoid that. Lately, I’ve been collaborating with @veelenga as much as …

---

## [Help with the Log module and databases](https://forum.crystal-lang.org/t/help-with-the-log-module-and-databases/9158)

<div class="topic-metadata">

**Author:** [@GalactHD](https://forum.crystal-lang.org/u/GalactHD)\
**Replies:** 4\
**Last updated:** [September 20, 2026, 12:05pm UTC](https://forum.crystal-lang.org/t/help-with-the-log-module-and-databases/9158 "2026-09-20T12:05:11Z")

</div>

Hi! Is it possible to use the Log module to get logs about queries/database access? Something like the Active Record logs, but only using the crystal-pg driver.

---

## [Crystal packaging in Fedora](https://forum.crystal-lang.org/t/crystal-packaging-in-fedora/8690)

<div class="topic-metadata">

**Author:** [@renich](https://forum.crystal-lang.org/u/renich)\
**Replies:** 31\
**Last updated:** [September 19, 2026, 4:31pm UTC](https://forum.crystal-lang.org/t/crystal-packaging-in-fedora/8690 "2026-09-19T16:31:28Z")

</div>

I, for one, am a Fedora contributor. I’ve loved Crystal since it’s beginnings and would love to see it as a first class citizen in Fedora. Up to now, I’ve been using Zawertun’s package as my main crystal driver in Fedor…

---

## [Ld64.lld: undefined symbol: close (and memcpy/memset/etc.) linking on macOS 26 (Xcode 26.2 SDK)](https://forum.crystal-lang.org/t/ld64-lld-undefined-symbol-close-and-memcpy-memset-etc-linking-on-macos-26-xcode-26-2-sdk/9157)

<div class="topic-metadata">

**Author:** [@chikega](https://forum.crystal-lang.org/u/chikega)\
**Replies:** 0\
**Last updated:** [September 19, 2026, 1:19am UTC](https://forum.crystal-lang.org/t/ld64-lld-undefined-symbol-close-and-memcpy-memset-etc-linking-on-macos-26-xcode-26-2-sdk/9157 "2026-09-19T01:19:42Z")

</div>

Since updating to macOS 26.6.2 with Xcode 26.2, Crystal fails to link any program — even a trivial puts "hello" — with undefined symbol errors for basic libc functions. Environment crystal --version Crystal 1.21.0 (202…

---

## [Crystal for Agents: v1.21.0 Update, 27 Advanced Recipes & Automated Code Verification](https://forum.crystal-lang.org/t/crystal-for-agents-v1-21-0-update-27-advanced-recipes-automated-code-verification/9155)

<div class="topic-metadata">

**Author:** [@renich](https://forum.crystal-lang.org/u/renich)\
**Replies:** 0\
**Last updated:** [September 18, 2026, 6:53pm UTC](https://forum.crystal-lang.org/t/crystal-for-agents-v1-21-0-update-27-advanced-recipes-automated-code-verification/9155 "2026-09-18T18:53:58Z")

</div>

Hey everyone, A while back, I shared Crystal for Agents here; my reference project aimed at keeping LLMs from hallucinating outdated patterns, stale threading APIs, or Rubyisms when working with Crystal. I recently fin…

---

## [Socket connection error after macOS 26.7 update](https://forum.crystal-lang.org/t/socket-connection-error-after-macos-26-7-update/9145)

<div class="topic-metadata">

**Author:** [@nogginly](https://forum.crystal-lang.org/u/nogginly)\
**Replies:** 9\
**Last updated:** [September 18, 2026, 5:33pm UTC](https://forum.crystal-lang.org/t/socket-connection-error-after-macos-26-7-update/9145 "2026-09-18T17:33:18Z")

</div>

UPDATE 2026-09-18 - Script connect\_refusal\_check\_v2.cr replaces earlier version below, adding a test without O\_NONBLOCK, which turned out to be OK (whew!) Hola folks, I’m looking for folks who are running macOS and h…

---

## [Feature Request: add to shard support for manage C/C++ deps](https://forum.crystal-lang.org/t/feature-request-add-to-shard-support-for-manage-c-c-deps/9154)

<div class="topic-metadata">

**Author:** [@synacker](https://forum.crystal-lang.org/u/synacker)\
**Replies:** 2\
**Last updated:** [September 18, 2026, 3:55pm UTC](https://forum.crystal-lang.org/t/feature-request-add-to-shard-support-for-manage-c-c-deps/9154 "2026-09-18T15:55:57Z")

</div>

Hi all, The crystal lang provides good way for binding with C, but not provides way to manage a sets of C/C++ deps. For example, I want to create a crystal lib for works with ffmpeg. The ffmpeg has a lot of deps. I can…

---

## [How about the new lightwight semantic analyzer in newest 0.19 crystalline?](https://forum.crystal-lang.org/t/how-about-the-new-lightwight-semantic-analyzer-in-newest-0-19-crystalline/9125)

<div class="topic-metadata">

**Author:** [@zw963](https://forum.crystal-lang.org/u/zw963)\
**Replies:** 6\
**Last updated:** [September 18, 2026, 3:23pm UTC](https://forum.crystal-lang.org/t/how-about-the-new-lightwight-semantic-analyzer-in-newest-0-19-crystalline/9125 "2026-09-18T15:23:12Z")

</div>

I am compiling, although, I’m not use LSP server too often. AI told me, current model is eventually-refined semantic model. What do you think? has the speed increased? better experience?

---

## [Markpdf: a best in class Markdown -\> PDF tool](https://forum.crystal-lang.org/t/markpdf-a-best-in-class-markdown-pdf-tool/9133)

<div class="topic-metadata">

**Author:** [@ralsina](https://forum.crystal-lang.org/u/ralsina)\
**Replies:** 16\
**Last updated:** [September 18, 2026, 1:15pm UTC](https://forum.crystal-lang.org/t/markpdf-a-best-in-class-markdown-pdf-tool/9133 "2026-09-18T13:15:06Z")

</div>

Markpdf is currently part of GitHub - ralsina/markterm · GitHub (along with markterm and markmark) It’s a markdown-\>PDF converter based on litehtml and libharu It parses markdown using markd then takes the HTML and use…

---

## [Not initialized error](https://forum.crystal-lang.org/t/not-initialized-error/9139)

<div class="topic-metadata">

**Author:** [@1004w](https://forum.crystal-lang.org/u/1004w)\
**Replies:** 13\
**Last updated:** [September 15, 2026, 7:28pm UTC](https://forum.crystal-lang.org/t/not-initialized-error/9139 "2026-09-15T19:28:11Z")

</div>

the code is: # units.cr require "./gamedata" require "./supports/macros" require "./modules" require "sdl" require "./lib/sdl/src/image" require "./lib/sdl/src/mix" require "./lib/sdl/src/ttf" require "./buildings" requ…

---

## [Pretty ? print of NamedTuple(s)](https://forum.crystal-lang.org/t/pretty-print-of-namedtuple-s/9143)

<div class="topic-metadata">

**Author:** [@willy610](https://forum.crystal-lang.org/u/willy610)\
**Replies:** 1\
**Last updated:** [September 15, 2026, 12:54pm UTC](https://forum.crystal-lang.org/t/pretty-print-of-namedtuple-s/9143 "2026-09-15T12:54:25Z")

</div>

Proper place for this contribution is perhaps somewhere else but… Background Often one is ‘combining’ data from several different objects in many steps. I used to stick to the Relation Algebra pattern with Selection, P…

---

## [Grafito: a journald web frontend](https://forum.crystal-lang.org/t/grafito-a-journald-web-frontend/8096)

<div class="topic-metadata">

**Author:** [@ralsina](https://forum.crystal-lang.org/u/ralsina)\
**Replies:** 9\
**Last updated:** [September 11, 2026, 1:15pm UTC](https://forum.crystal-lang.org/t/grafito-a-journald-web-frontend/8096 "2026-09-11T13:15:50Z")

</div>

I started this as sort of a joke (Grafito is like Grafana, but chiquitito) and it turned out to be a fairly useful little tool! Basically: it exposes your linux’s logs via web, with a nice, simple UI. Just a few hund…

---

## [Doing Raytracer in Crystal](https://forum.crystal-lang.org/t/doing-raytracer-in-crystal/3029)

<div class="topic-metadata">

**Author:** [@jzakiya](https://forum.crystal-lang.org/u/jzakiya)\
**Replies:** 88\
**Last updated:** [September 11, 2026, 12:06am UTC](https://forum.crystal-lang.org/t/doing-raytracer-in-crystal/3029 "2026-09-11T00:06:48Z")

</div>

I came across this project today that compares different implementations of raytracer code. I copied and ran the Ruby implementation in three different versions. They need two rubygems to do the image creation. Her…

---

## [Docs generating don't respect "extend self" in modules](https://forum.crystal-lang.org/t/docs-generating-dont-respect-extend-self-in-modules/9141)

<div class="topic-metadata">

**Author:** [@GerBra](https://forum.crystal-lang.org/u/GerBra)\
**Replies:** 0\
**Last updated:** [September 10, 2026, 12:49pm UTC](https://forum.crystal-lang.org/t/docs-generating-dont-respect-extend-self-in-modules/9141 "2026-09-10T12:49:59Z")

</div>

Hello, first post here! Have a minor problem, maybe a “little” bug when generating docs with: crystal docs Given this module: TODO: Write documentation for DocsTest module DocsTest extend self VERSION = "0.1.0" def …

---

## [Multi-valued enum](https://forum.crystal-lang.org/t/multi-valued-enum/9140)

<div class="topic-metadata">

**Author:** [@hutou](https://forum.crystal-lang.org/u/hutou)\
**Replies:** 1\
**Last updated:** [September 10, 2026, 10:01am UTC](https://forum.crystal-lang.org/t/multi-valued-enum/9140 "2026-09-10T10:01:08Z")

</div>

Speaking of AI, I once asked ChatGPT to suggest the best way to code a variable or type that would meet the following conditions: 1) never occur, 2) occur once, 3) repeat times? It suggested the following code: struct…

---

## [Different flavours of \`Enum\`](https://forum.crystal-lang.org/t/different-flavours-of-enum/9131)

<div class="topic-metadata">

**Author:** [@straight-shoota](https://forum.crystal-lang.org/u/straight-shoota)\
**Replies:** 14\
**Last updated:** [September 9, 2026, 9:45pm UTC](https://forum.crystal-lang.org/t/different-flavours-of-enum/9131 "2026-09-09T21:45:41Z")

</div>

There are a number of discussions about potential enhancements to the Enum type. For example, the ability to reopen Enum types to add additional members has been requested in Reopening Enums · Issue #7629 · crystal-lang…

---

## [Crystal JSON Lexer is too strict on single unpaired UTF-16 surrogate for skipped fields](https://forum.crystal-lang.org/t/crystal-json-lexer-is-too-strict-on-single-unpaired-utf-16-surrogate-for-skipped-fields/9138)

<div class="topic-metadata">

**Author:** [@dammer](https://forum.crystal-lang.org/u/dammer)\
**Replies:** 2\
**Last updated:** [September 9, 2026, 3:16pm UTC](https://forum.crystal-lang.org/t/crystal-json-lexer-is-too-strict-on-single-unpaired-utf-16-surrogate-for-skipped-fields/9138 "2026-09-09T15:16:32Z")

</div>

A little code sample: require "json" # raw JSON frame with a lone-surrogate ESCAPE (not raw invalid bytes) raw = %q({"post\_data":"before\\uda41after","x":1}) puts "raw valid\_encoding? #{raw.valid\_encoding?}" struct …

---

## [\`Proc\` vs. function pointer](https://forum.crystal-lang.org/t/proc-vs-function-pointer/9121)

<div class="topic-metadata">

**Author:** [@straight-shoota](https://forum.crystal-lang.org/u/straight-shoota)\
**Replies:** 10\
**Last updated:** [September 6, 2026, 8:59am UTC](https://forum.crystal-lang.org/t/proc-vs-function-pointer/9121 "2026-09-06T08:59:06Z")

</div>

Using Proc for function pointers in lib bindings causes type safety issues. A function pointer is literally just a pointer (to a function :smirking\_face:). Proc is a function pointer plus an optional pointer to a closur…

---

## [Announcing the Fedora Crystal SIG & Matrix Room (Fedora 46+ Readiness)](https://forum.crystal-lang.org/t/announcing-the-fedora-crystal-sig-matrix-room-fedora-46-readiness/9132)

<div class="topic-metadata">

**Author:** [@renich](https://forum.crystal-lang.org/u/renich)\
**Replies:** 0\
**Last updated:** [September 5, 2026, 1:45pm UTC](https://forum.crystal-lang.org/t/announcing-the-fedora-crystal-sig-matrix-room-fedora-46-readiness/9132 "2026-09-05T13:45:41Z")

</div>

Hello Crystal Community! As part of the initiative to bring Crystal into Fedora Linux as an official, first-class language runtime (Fedora 46 System-Wide Change Proposal), we have established the official Fedora Crystal…

---

## [Using new parallel ExecutionContext](https://forum.crystal-lang.org/t/using-new-parallel-executioncontext/9069)

<div class="topic-metadata">

**Author:** [@jzakiya](https://forum.crystal-lang.org/u/jzakiya)\
**Replies:** 26\
**Last updated:** [September 3, 2026, 9:56pm UTC](https://forum.crystal-lang.org/t/using-new-parallel-executioncontext/9069 "2026-09-03T21:56:00Z")

</div>

I converted my residue sieves to use the new Crystal 1.21 ExecutionContext structures. They’re a significant upgrade in convenience, flexibility, and performance to create true parallelism. :slight\_smile: Under the old…

---

## [How to make your crystal program compile reeeeeally slow](https://forum.crystal-lang.org/t/how-to-make-your-crystal-program-compile-reeeeeally-slow/9130)

<div class="topic-metadata">

**Author:** [@ralsina](https://forum.crystal-lang.org/u/ralsina)\
**Replies:** 10\
**Last updated:** [September 3, 2026, 11:52am UTC](https://forum.crystal-lang.org/t/how-to-make-your-crystal-program-compile-reeeeeally-slow/9130 "2026-09-03T11:52:10Z")

</div>

Here is a pretty innocent program that takes a really long time to compile if you use --release: # big.cr — a def that returns a ~163KB struct by value struct Big getter a : StaticArray(UInt64, 20410) # 20410 \* 8 = ~1…

---

## [Markterm: render markdown to the terminal](https://forum.crystal-lang.org/t/markterm-render-markdown-to-the-terminal/7049)

<div class="topic-metadata">

**Author:** [@ralsina](https://forum.crystal-lang.org/u/ralsina)\
**Replies:** 11\
**Last updated:** [September 2, 2026, 12:44pm UTC](https://forum.crystal-lang.org/t/markterm-render-markdown-to-the-terminal/7049 "2026-09-02T12:44:06Z")

</div>

What it says in the box: just like Markd.to\_html give you HTML, Markd.to\_term gives you something that when printed to a terminal looks nice :slight\_smile: Works in light and dark terminals (and guesses if you are using…

---

## [Kemal Identity: an auth shard for Kemal Web Framework, and I'd like some honest opinions before I freeze the API](https://forum.crystal-lang.org/t/kemal-identity-an-auth-shard-for-kemal-web-framework-and-id-like-some-honest-opinions-before-i-freeze-the-api/9127)

<div class="topic-metadata">

**Author:** [@urunsiyabend](https://forum.crystal-lang.org/u/urunsiyabend)\
**Replies:** 0\
**Last updated:** [September 1, 2026, 4:40pm UTC](https://forum.crystal-lang.org/t/kemal-identity-an-auth-shard-for-kemal-web-framework-and-id-like-some-honest-opinions-before-i-freeze-the-api/9127 "2026-09-01T16:40:05Z")

</div>

Hi everyone, I’ve been working on Kemal Identity for a while, an authentication shard for Kemal Web Framework, and I’m getting close to freezing its API for 1.0. I’d rather hear what’s wrong with it before that than aft…

[Next page](https://forum.crystal-lang.org/latest.md?page=1)
