On Sun, 30 Aug 2026 14:57:47 -0500
joshua stein <[email protected]> wrote:

> On Sun, 30 Aug 2026 at 14:42:01 -0500, izzy Meyer wrote:
> > Hello ports@, jcs@ (copied)
> > 
> > Could the lang/crystal port please be updated to 1.21.0?
> 
> Asking for an update without providing a diff that you tested is not 
> very helpful.

Fair point, I apologize for this. Attached is a diff which uses my
self-hosted webserver on a rpi3 running httpd for hosting the crystal
binary bootstrap tarball. I'll be getting a VPS sometime in the future
where I'd rather host this distfile, so I'll send a new diff once I have
that up if this diff gets committed.

I tested compiling a small hello world program, but the regression
tests OOM on my hardware with 16G of ram. I see ulimit being called in
the test step, maybe I should bump that? I'm unsure.

> > One major change that's in this release is that crystal on OpenBSD
> > uses kqueue for event loops now. The only consumer of this port in
> > the tree AFAICT is sysutils/exfetch, which is maintained by me.
> > Later down the line I would like to port the ameba linter and the
> > lattice LSP, so having an up-to-date crystal port would be very
> > helpful for me when doing that.
> 
> It's been using kqueue since 1.20.1:
> 
> https://github.com/openbsd/ports/commit/79c37f75d212ecf00fae91eaf7e38c44b872bbb5#diff-384752a3e5aaa61f5ae37228a7f611a38fad330e6568cd7afbb212d42b9b2d0d

I meant that this was done in upstream, so the patch can be dropped.

> > One of the SITES distfiles is on jcs@'s domain, so I can't update it
> > myself without access to his site, unfortunately, hence me asking
> > here.
> 
> I'm no longer using or maintaining this port so I don't feel 
> comfortable hosting a custom binary bootstrap distfile that someone 
> else built.  You (or whoever maintains this) will need to find a new 
> place to host it.
> 

I'll take maintainership in this case. Thanks for the pointers.

-- 
iz (she/her)

> I say mundane things
> so the uninteresting
> just might get noticed.

izder456 (dot) neocities (dot) org
diff --git a/lang/crystal/Makefile b/lang/crystal/Makefile
index bbb48aab4..43f4b8219 100644
--- a/lang/crystal/Makefile
+++ b/lang/crystal/Makefile
@@ -3,7 +3,7 @@ ONLY_FOR_ARCHS=	amd64
 
 USE_NOBTCFI =	Yes
 
-V =		1.20.1
+V =		1.21.0
 V_SHARDS =	0.20.0
 V_MOLINILLO =	0.2.2
 
@@ -17,6 +17,8 @@ CATEGORIES =	lang
 
 HOMEPAGE =	https://crystal-lang.org/
 
+MAINTAINER =	izzy Meyer <[email protected]>
+
 # Apache 2.0
 PERMIT_PACKAGE = Yes
 
@@ -29,13 +31,12 @@ WANTLIB +=	iconv m pcre2-8 yaml-0 llvm${MODCLANG_VERSION}/lib/LLVM
 # current version of Crystal there, then checking out the source for that
 # version, applying patches included in this port, and running:
 #
-# 	make crystal FLAGS="--cross-compile --target amd64-unknown-openbsd7.9"
+# 	make crystal FLAGS="--cross-compile --target amd64-unknown-openbsd8.0"
 #
 # The result will be built at .build/crystal.o
 #
-
-SITES =		https://jcs.org/distfiles/
-DISTFILES =	crystal-${V}-OpenBSD7.9.tar.gz
+SITES =		http://izder456.zapto.org/distfiles/
+DISTFILES =	crystal-${V}-OpenBSD8.0.tar.gz
 
 # Build requires llvm-config from ports, not from base.  When changing
 # MODCLANG_VERSION, keep paths in patches/ in sync here and in bootstrap
diff --git a/lang/crystal/distinfo b/lang/crystal/distinfo
index 98a0e4a2f..b4eb6a366 100644
--- a/lang/crystal/distinfo
+++ b/lang/crystal/distinfo
@@ -1,8 +1,8 @@
-SHA256 (crystal-1.20.1-OpenBSD7.9.tar.gz) = F3wUfD54rts0phOXRWHhGTpw8jKPlkuNyz2zC7SD1Lw=
-SHA256 (crystal-lang-crystal-1.20.1.tar.gz) = L9x+rv7TR1U4PbFfh4fjp8LwQGnpOHHTU/lfoIPtfY0=
+SHA256 (crystal-1.21.0-OpenBSD8.0.tar.gz) = 5gON6rvgH3uwRnao+ZwbxC9YWUyoCuIJjOP0Z3thqxs=
+SHA256 (crystal-lang-crystal-1.21.0.tar.gz) = Xi1p9WVVOqcofnZXDUVAojG/3xo3874Xn0l+8d+KDZo=
 SHA256 (crystal-lang-crystal-molinillo-v0.2.2.tar.gz) = rE02ZEeq++wjyCEZp0s+NRmXV4L/N9iwCjR0nIHm6HY=
 SHA256 (crystal-lang-shards-v0.20.0.tar.gz) = hlW4d2EBZAnkQRBW41CyTn/nnq4/InszVLGBoD8U1do=
-SIZE (crystal-1.20.1-OpenBSD7.9.tar.gz) = 12261054
-SIZE (crystal-lang-crystal-1.20.1.tar.gz) = 4198258
+SIZE (crystal-1.21.0-OpenBSD8.0.tar.gz) = 12483034
+SIZE (crystal-lang-crystal-1.21.0.tar.gz) = 4227340
 SIZE (crystal-lang-crystal-molinillo-v0.2.2.tar.gz) = 23430
 SIZE (crystal-lang-shards-v0.20.0.tar.gz) = 109618
diff --git a/lang/crystal/patches/patch-bin_crystal b/lang/crystal/patches/patch-bin_crystal
index 109b98ce3..7f9d3684f 100644
--- a/lang/crystal/patches/patch-bin_crystal
+++ b/lang/crystal/patches/patch-bin_crystal
@@ -7,7 +7,7 @@ Index: bin/crystal
  
  ################## https://github.com/mkropat/sh-realpath #####################
  #
-@@ -193,6 +193,8 @@ export CRYSTAL_EXEC_PATH
+@@ -192,6 +192,8 @@ export CRYSTAL_EXEC_PATH
  
  if [ -x "$CRYSTAL_DIR/${CRYSTAL_BIN}" ]; then
    __warning_msg "Using compiled compiler at ${CRYSTAL_DIR#"$PWD/"}/${CRYSTAL_BIN}"
diff --git a/lang/crystal/patches/patch-src_compiler_crystal_compiler_cr b/lang/crystal/patches/patch-src_compiler_crystal_compiler_cr
index 3c68ecffd..619b6d0bf 100644
--- a/lang/crystal/patches/patch-src_compiler_crystal_compiler_cr
+++ b/lang/crystal/patches/patch-src_compiler_crystal_compiler_cr
@@ -1,9 +1,10 @@
+
 # This patch must also be applied to the source tree on the cross-compiling
 # host when building crystal.o
 Index: src/compiler/crystal/compiler.cr
 --- src/compiler/crystal/compiler.cr.orig
 +++ src/compiler/crystal/compiler.cr
-@@ -533,6 +533,10 @@ module Crystal
+@@ -546,6 +546,10 @@ module Crystal
  
          link_flags = use_modern_linker(link_flags)
  
diff --git a/lang/crystal/patches/patch-src_crystal_event_loop_cr b/lang/crystal/patches/patch-src_crystal_event_loop_cr
deleted file mode 100644
index 65b27dde1..000000000
--- a/lang/crystal/patches/patch-src_crystal_event_loop_cr
+++ /dev/null
@@ -1,23 +0,0 @@
-# This patch must also be applied to the source tree on the cross-compiling
-# host when building crystal.o
-Index: src/crystal/event_loop.cr
---- src/crystal/event_loop.cr.orig
-+++ src/crystal/event_loop.cr
-@@ -14,7 +14,7 @@ abstract class Crystal::EventLoop
-         Crystal::EventLoop::LibEvent
-       {% elsif flag?("evloop=epoll") || flag?(:android) || flag?(:linux) %}
-         Crystal::EventLoop::Epoll
--      {% elsif flag?("evloop=kqueue") || flag?(:darwin) || flag?(:freebsd) %}
-+      {% elsif flag?("evloop=kqueue") || flag?(:darwin) || flag?(:freebsd) || flag?(:openbsd) %}
-         Crystal::EventLoop::Kqueue
-       {% else %}
-         Crystal::EventLoop::LibEvent
-@@ -166,7 +166,7 @@ end
-     require "./event_loop/libevent"
-   {% elsif flag?("evloop=epoll") || flag?(:android) || flag?(:linux) %}
-     require "./event_loop/epoll"
--  {% elsif flag?("evloop=kqueue") || flag?(:darwin) || flag?(:freebsd) %}
-+  {% elsif flag?("evloop=kqueue") || flag?(:darwin) || flag?(:freebsd) || flag?(:openbsd) %}
-     require "./event_loop/kqueue"
-   {% else %}
-     require "./event_loop/libevent"
diff --git a/lang/crystal/pkg/PLIST b/lang/crystal/pkg/PLIST
index e8ad5182d..f2810d21d 100644
--- a/lang/crystal/pkg/PLIST
+++ b/lang/crystal/pkg/PLIST
@@ -365,7 +365,6 @@ lib/crystal/crystal/dwarf/abbrev.cr
 lib/crystal/crystal/dwarf/info.cr
 lib/crystal/crystal/dwarf/line_numbers.cr
 lib/crystal/crystal/dwarf/strings.cr
-lib/crystal/crystal/elf.cr
 lib/crystal/crystal/event_loop/
 lib/crystal/crystal/event_loop.cr
 lib/crystal/crystal/event_loop/epoll.cr
@@ -383,6 +382,7 @@ lib/crystal/crystal/event_loop/kqueue.cr
 lib/crystal/crystal/event_loop/libevent/
 lib/crystal/crystal/event_loop/libevent.cr
 lib/crystal/crystal/event_loop/libevent/event.cr
+lib/crystal/crystal/event_loop/libevent/evented.cr
 lib/crystal/crystal/event_loop/libevent/lib_event2.cr
 lib/crystal/crystal/event_loop/lock.cr
 lib/crystal/crystal/event_loop/polling/
@@ -401,10 +401,8 @@ lib/crystal/crystal/iconv.cr
 lib/crystal/crystal/interpreter.cr
 lib/crystal/crystal/lib_iconv.cr
 lib/crystal/crystal/lock.cr
-lib/crystal/crystal/mach_o.cr
 lib/crystal/crystal/main.cr
 lib/crystal/crystal/once.cr
-lib/crystal/crystal/pe.cr
 lib/crystal/crystal/pointer_linked_list.cr
 lib/crystal/crystal/pointer_pairing_heap.cr
 lib/crystal/crystal/print_buffered.cr
@@ -445,6 +443,7 @@ lib/crystal/crystal/system/unix.cr
 lib/crystal/crystal/system/unix/addrinfo.cr
 lib/crystal/crystal/system/unix/arc4random.cr
 lib/crystal/crystal/system/unix/dir.cr
+lib/crystal/crystal/system/unix/elf.cr
 lib/crystal/crystal/system/unix/env.cr
 lib/crystal/crystal/system/unix/epoll.cr
 lib/crystal/crystal/system/unix/eventfd.cr
@@ -458,6 +457,7 @@ lib/crystal/crystal/system/unix/hostname.cr
 lib/crystal/crystal/system/unix/io_uring.cr
 lib/crystal/crystal/system/unix/kqueue.cr
 lib/crystal/crystal/system/unix/linux_cpucount.cr
+lib/crystal/crystal/system/unix/mach_o.cr
 lib/crystal/crystal/system/unix/main.cr
 lib/crystal/crystal/system/unix/mime.cr
 lib/crystal/crystal/system/unix/path.cr
@@ -514,6 +514,7 @@ lib/crystal/crystal/system/win32/iocp.cr
 lib/crystal/crystal/system/win32/library_archive.cr
 lib/crystal/crystal/system/win32/mime.cr
 lib/crystal/crystal/system/win32/path.cr
+lib/crystal/crystal/system/win32/pe.cr
 lib/crystal/crystal/system/win32/process.cr
 lib/crystal/crystal/system/win32/random.cr
 lib/crystal/crystal/system/win32/signal.cr
@@ -530,7 +531,6 @@ lib/crystal/crystal/system/win32/windows_sdk.cr
 lib/crystal/crystal/system/win32/wmain.cr
 lib/crystal/crystal/system/win32/zone_names.cr
 lib/crystal/crystal/system/windows.cr
-lib/crystal/crystal/thread_local_value.cr
 lib/crystal/crystal/tracing.cr
 lib/crystal/crystal/value_with_finalizer.cr
 lib/crystal/csv/
@@ -703,7 +703,6 @@ lib/crystal/io/delimited.cr
 lib/crystal/io/encoding.cr
 lib/crystal/io/encoding_stubs.cr
 lib/crystal/io/error.cr
-lib/crystal/io/evented.cr
 lib/crystal/io/file_descriptor.cr
 lib/crystal/io/hexdump.cr
 lib/crystal/io/memory.cr
@@ -765,6 +764,7 @@ lib/crystal/lib_c/aarch64-darwin/c/sys/file.cr
 lib/crystal/lib_c/aarch64-darwin/c/sys/mman.cr
 lib/crystal/lib_c/aarch64-darwin/c/sys/resource.cr
 lib/crystal/lib_c/aarch64-darwin/c/sys/select.cr
+lib/crystal/lib_c/aarch64-darwin/c/sys/sendfile.cr
 lib/crystal/lib_c/aarch64-darwin/c/sys/socket.cr
 lib/crystal/lib_c/aarch64-darwin/c/sys/stat.cr
 lib/crystal/lib_c/aarch64-darwin/c/sys/time.cr
@@ -814,6 +814,7 @@ lib/crystal/lib_c/aarch64-linux-android/c/sys/mman.cr
 lib/crystal/lib_c/aarch64-linux-android/c/sys/random.cr
 lib/crystal/lib_c/aarch64-linux-android/c/sys/resource.cr
 lib/crystal/lib_c/aarch64-linux-android/c/sys/select.cr
+lib/crystal/lib_c/aarch64-linux-android/c/sys/sendfile.cr
 lib/crystal/lib_c/aarch64-linux-android/c/sys/socket.cr
 lib/crystal/lib_c/aarch64-linux-android/c/sys/stat.cr
 lib/crystal/lib_c/aarch64-linux-android/c/sys/syscall.cr
@@ -866,6 +867,7 @@ lib/crystal/lib_c/aarch64-linux-gnu/c/sys/mman.cr
 lib/crystal/lib_c/aarch64-linux-gnu/c/sys/random.cr
 lib/crystal/lib_c/aarch64-linux-gnu/c/sys/resource.cr
 lib/crystal/lib_c/aarch64-linux-gnu/c/sys/select.cr
+lib/crystal/lib_c/aarch64-linux-gnu/c/sys/sendfile.cr
 lib/crystal/lib_c/aarch64-linux-gnu/c/sys/socket.cr
 lib/crystal/lib_c/aarch64-linux-gnu/c/sys/stat.cr
 lib/crystal/lib_c/aarch64-linux-gnu/c/sys/time.cr
@@ -916,6 +918,7 @@ lib/crystal/lib_c/aarch64-linux-musl/c/sys/mman.cr
 lib/crystal/lib_c/aarch64-linux-musl/c/sys/random.cr
 lib/crystal/lib_c/aarch64-linux-musl/c/sys/resource.cr
 lib/crystal/lib_c/aarch64-linux-musl/c/sys/select.cr
+lib/crystal/lib_c/aarch64-linux-musl/c/sys/sendfile.cr
 lib/crystal/lib_c/aarch64-linux-musl/c/sys/socket.cr
 lib/crystal/lib_c/aarch64-linux-musl/c/sys/stat.cr
 lib/crystal/lib_c/aarch64-linux-musl/c/sys/time.cr
@@ -969,6 +972,7 @@ lib/crystal/lib_c/arm-linux-gnueabihf/c/sys/mman.cr
 lib/crystal/lib_c/arm-linux-gnueabihf/c/sys/random.cr
 lib/crystal/lib_c/arm-linux-gnueabihf/c/sys/resource.cr
 lib/crystal/lib_c/arm-linux-gnueabihf/c/sys/select.cr
+lib/crystal/lib_c/arm-linux-gnueabihf/c/sys/sendfile.cr
 lib/crystal/lib_c/arm-linux-gnueabihf/c/sys/socket.cr
 lib/crystal/lib_c/arm-linux-gnueabihf/c/sys/stat.cr
 lib/crystal/lib_c/arm-linux-gnueabihf/c/sys/time.cr
@@ -1019,6 +1023,7 @@ lib/crystal/lib_c/i386-linux-gnu/c/sys/mman.cr
 lib/crystal/lib_c/i386-linux-gnu/c/sys/random.cr
 lib/crystal/lib_c/i386-linux-gnu/c/sys/resource.cr
 lib/crystal/lib_c/i386-linux-gnu/c/sys/select.cr
+lib/crystal/lib_c/i386-linux-gnu/c/sys/sendfile.cr
 lib/crystal/lib_c/i386-linux-gnu/c/sys/socket.cr
 lib/crystal/lib_c/i386-linux-gnu/c/sys/stat.cr
 lib/crystal/lib_c/i386-linux-gnu/c/sys/time.cr
@@ -1069,6 +1074,7 @@ lib/crystal/lib_c/i386-linux-musl/c/sys/mman.cr
 lib/crystal/lib_c/i386-linux-musl/c/sys/random.cr
 lib/crystal/lib_c/i386-linux-musl/c/sys/resource.cr
 lib/crystal/lib_c/i386-linux-musl/c/sys/select.cr
+lib/crystal/lib_c/i386-linux-musl/c/sys/sendfile.cr
 lib/crystal/lib_c/i386-linux-musl/c/sys/socket.cr
 lib/crystal/lib_c/i386-linux-musl/c/sys/stat.cr
 lib/crystal/lib_c/i386-linux-musl/c/sys/time.cr
@@ -1148,6 +1154,7 @@ lib/crystal/lib_c/x86_64-darwin/c/sys/file.cr
 lib/crystal/lib_c/x86_64-darwin/c/sys/mman.cr
 lib/crystal/lib_c/x86_64-darwin/c/sys/resource.cr
 lib/crystal/lib_c/x86_64-darwin/c/sys/select.cr
+lib/crystal/lib_c/x86_64-darwin/c/sys/sendfile.cr
 lib/crystal/lib_c/x86_64-darwin/c/sys/socket.cr
 lib/crystal/lib_c/x86_64-darwin/c/sys/stat.cr
 lib/crystal/lib_c/x86_64-darwin/c/sys/time.cr
@@ -1192,6 +1199,7 @@ lib/crystal/lib_c/x86_64-dragonfly/c/sys/file.cr
 lib/crystal/lib_c/x86_64-dragonfly/c/sys/mman.cr
 lib/crystal/lib_c/x86_64-dragonfly/c/sys/resource.cr
 lib/crystal/lib_c/x86_64-dragonfly/c/sys/select.cr
+lib/crystal/lib_c/x86_64-dragonfly/c/sys/sendfile.cr
 lib/crystal/lib_c/x86_64-dragonfly/c/sys/socket.cr
 lib/crystal/lib_c/x86_64-dragonfly/c/sys/stat.cr
 lib/crystal/lib_c/x86_64-dragonfly/c/sys/time.cr
@@ -1239,6 +1247,7 @@ lib/crystal/lib_c/x86_64-freebsd/c/sys/ktls.cr
 lib/crystal/lib_c/x86_64-freebsd/c/sys/mman.cr
 lib/crystal/lib_c/x86_64-freebsd/c/sys/resource.cr
 lib/crystal/lib_c/x86_64-freebsd/c/sys/select.cr
+lib/crystal/lib_c/x86_64-freebsd/c/sys/sendfile.cr
 lib/crystal/lib_c/x86_64-freebsd/c/sys/socket.cr
 lib/crystal/lib_c/x86_64-freebsd/c/sys/stat.cr
 lib/crystal/lib_c/x86_64-freebsd/c/sys/time.cr
@@ -1289,6 +1298,7 @@ lib/crystal/lib_c/x86_64-linux-gnu/c/sys/mman.cr
 lib/crystal/lib_c/x86_64-linux-gnu/c/sys/random.cr
 lib/crystal/lib_c/x86_64-linux-gnu/c/sys/resource.cr
 lib/crystal/lib_c/x86_64-linux-gnu/c/sys/select.cr
+lib/crystal/lib_c/x86_64-linux-gnu/c/sys/sendfile.cr
 lib/crystal/lib_c/x86_64-linux-gnu/c/sys/socket.cr
 lib/crystal/lib_c/x86_64-linux-gnu/c/sys/stat.cr
 lib/crystal/lib_c/x86_64-linux-gnu/c/sys/time.cr
@@ -1339,6 +1349,7 @@ lib/crystal/lib_c/x86_64-linux-musl/c/sys/mman.cr
 lib/crystal/lib_c/x86_64-linux-musl/c/sys/random.cr
 lib/crystal/lib_c/x86_64-linux-musl/c/sys/resource.cr
 lib/crystal/lib_c/x86_64-linux-musl/c/sys/select.cr
+lib/crystal/lib_c/x86_64-linux-musl/c/sys/sendfile.cr
 lib/crystal/lib_c/x86_64-linux-musl/c/sys/socket.cr
 lib/crystal/lib_c/x86_64-linux-musl/c/sys/stat.cr
 lib/crystal/lib_c/x86_64-linux-musl/c/sys/time.cr
@@ -1478,6 +1489,7 @@ lib/crystal/lib_c/x86_64-solaris/c/sys/file.cr
 lib/crystal/lib_c/x86_64-solaris/c/sys/mman.cr
 lib/crystal/lib_c/x86_64-solaris/c/sys/resource.cr
 lib/crystal/lib_c/x86_64-solaris/c/sys/select.cr
+lib/crystal/lib_c/x86_64-solaris/c/sys/sendfile.cr
 lib/crystal/lib_c/x86_64-solaris/c/sys/socket.cr
 lib/crystal/lib_c/x86_64-solaris/c/sys/stat.cr
 lib/crystal/lib_c/x86_64-solaris/c/sys/time.cr

Reply via email to