GramEditor/gram
37
982
Fork
You've already forked gram
88

racket extension builds, but fails to start, on Gram #362

Closed
opened 2026年07月02日 22:54:20 +02:00 by wren-falcon · 10 comments

Arch Linux, Gram 3.0.1 (via pacman). Extension URL: https://github.com/zed-extensions/racket

Contents of extension.toml and Cargo.toml from .local/share/gram/extensions/installed/racket/

extension.toml

id = "racket"
name = "Racket"
description = "Racket support."
version = "0.1.1"
schema_version = 1
authors = ["Mikayla Maki <mikayla@zed.dev>"]
repository = "https://github.com/zed-extensions/racket"
[language_servers.racket-lsp]
name = "racket-lsp"
language = "Racket"
[grammars.racket]
repository = "https://github.com/zed-industries/tree-sitter-racket"
commit = "beb29de2b668110e69df0c6d51649c3e2c91d863"

Cargo.toml

[package]
name = "racket"
version = "0.1.1"
edition = "2024"
publish = false
license = "Apache-2.0"
[lib]
path = "src/racket.rs"
crate-type = ["cdylib"]
[dependencies]
zed_extension_api = "0.6.0"
Version details of system packages
$ pacman -Q rust clang
rust 1:1.96.1-1
clang 22.1.6-1
$ pacman -Qs wasm
local/rust-wasm 1:1.96.1-1
 WebAssembly targets for Rust
local/wasm-component-ld 0.5.25-1
 Command line linker for creating WebAssembly components
local/wasm-tools 1.252.0-1
 Low level tooling for WebAssembly in Rust
$ pacman -Qs wasi
local/wasi-compiler-rt 22.1.0-2
 Compiler runtime libraries for clang (WASI)
local/wasi-libc 1:0+592+161b3195-1
 WASI libc implementation for WebAssembly
$ racket --version
Welcome to Racket v8.18 [cs].
$ raco pkg show racket-langserver
Installation-wide:
 [none]
User-specific for installation "8.18":
 Package Checksum Source
 racket-langserver 5cbf431c8e7e62c7... catalog...erver.git
$ which racket
/usr/bin/racket

After configuring my system with the appropriate packages, I installed the Racket extension via the "Install From URL" button on the extensions page. It shows no errors. However, attempting to open a Racket (.rkt) file shows an error that the Racket extension/lsp could not be started:

Failed to start language server "racket-lsp": initializing server racket-lsp, id 0
Caused by:
 initialize failed
Gram.log
2026年07月01日T16:03:37-04:00 INFO [gram] ========== starting gram 3.0.1 sha=unknown ==========
2026年07月01日T16:03:37-04:00 INFO [gpui::platform::wgpu::wgpu_context] Selected GPU adapter: "Intel(R) Iris(R) Xe Graphics (ADL GT2)" (Vulkan)
2026年07月01日T16:03:37-04:00 INFO [gpui::platform::linux::platform] activate is not implemented on Linux, ignoring the call
2026年07月01日T16:03:37-04:00 INFO [gram::gram] Using GPU: GpuSpecs { is_software_emulated: false, device_name: "Intel(R) Iris(R) Xe Graphics (ADL GT2)", driver_name: "Intel open-source Mesa driver", driver_info: "Mesa 26.1.3-arch1.2" }
2026年07月01日T16:03:37-04:00 INFO [util] set environment variables from shell:/usr/bin/bash, path:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
2026年07月01日T16:03:39-04:00 INFO [extensions_ui] extensions: []
2026年07月01日T16:03:43-04:00 INFO [extension::extension_builder] compile_extension: "/tmp/.tmp02PAd9racket/racket" ExtensionManifest { id: "racket", name: "Racket", version: "0.1.1", schema_version: SchemaVersion(1), description: Some("Racket support."), repository: Some("https://github.com/zed-extensions/racket"), authors: ["Mikayla Maki <mikayla@zed.dev>"], lib: LibManifestEntry { kind: Some(Rust), version: None }, themes: [], icon_themes: [], languages: ["languages/racket"], grammars: {"racket": GrammarManifestEntry { repository: "https://github.com/zed-industries/tree-sitter-racket", rev: "beb29de2b668110e69df0c6d51649c3e2c91d863", path: None }}, language_servers: {LanguageServerName("racket-lsp"): LanguageServerManifestEntry { language: Some(LanguageName("Racket")), languages: [], language_ids: {}, code_action_kinds: None }}, snippets: None, capabilities: [], debug_adapters: {}, debug_locators: {} }
2026年07月01日T16:03:43-04:00 INFO [extension::extension_builder] compiling Rust extension /tmp/.tmp02PAd9racket/racket
2026年07月01日T16:03:43-04:00 INFO [extension::extension_builder] compiling Rust crate for extension /tmp/.tmp02PAd9racket/racket
2026年07月01日T16:04:00-04:00 INFO [extension::extension_builder] compiled Rust crate for extension /tmp/.tmp02PAd9racket/racket
2026年07月01日T16:04:00-04:00 INFO [extension::extension_builder] encoding wasm component for extension /tmp/.tmp02PAd9racket/racket
2026年07月01日T16:04:00-04:00 INFO [extension::extension_builder] extension /tmp/.tmp02PAd9racket/racket written to /tmp/.tmp02PAd9racket/racket/extension.wasm
2026年07月01日T16:04:00-04:00 INFO [extension::extension_builder] compiled Rust extension /tmp/.tmp02PAd9racket/racket
2026年07月01日T16:04:00-04:00 INFO [extension::extension_builder] compiling grammar racket for extension /tmp/.tmp02PAd9racket/racket
2026年07月01日T16:04:02-04:00 INFO [extension::extension_builder] un-tarring wasi-sdk to /home/wren/.local/share/gram/extensions/build/wasi-sysroot-temp
2026年07月01日T16:04:02-04:00 INFO [extension::extension_builder] finished downloading wasi-sysroot
2026年07月01日T16:04:02-04:00 INFO [extension::extension_builder] checking out racket parser
2026年07月01日T16:04:02-04:00 INFO [extension::extension_builder] git_dir="/tmp/.tmp02PAd9racket/racket/grammars/racket/.git"
2026年07月01日T16:04:02-04:00 INFO [extension::extension_builder] checkout_repo: running git init /tmp/.tmp02PAd9racket/racket/grammars/racket
2026年07月01日T16:04:02-04:00 INFO [extension::extension_builder] checkout_repo: running git --git-dir /tmp/.tmp02PAd9racket/racket/grammars/racket/.git remote add origin https://github.com/zed-industries/tree-sitter-racket
2026年07月01日T16:04:02-04:00 INFO [extension::extension_builder] compiling racket parser
2026年07月01日T16:04:04-04:00 INFO [extension::extension_builder] compiled grammar racket for extension /tmp/.tmp02PAd9racket/racket
2026年07月01日T16:04:04-04:00 INFO [extension::extension_builder] finished compiling extension /tmp/.tmp02PAd9racket/racket
2026年07月01日T16:04:04-04:00 INFO [extension_host] Compiled "racket" to "/home/wren/.local/share/gram/extensions/installed"
2026年07月01日T16:04:04-04:00 INFO [extension_host] Now this should exist.. /home/wren/.local/share/gram/extensions/installed/racket
2026年07月01日T16:04:04-04:00 INFO [extension_host] copy_dir from=/tmp/.tmp02PAd9racket/racket, to=/home/wren/.local/share/gram/extensions/installed/racket
2026年07月01日T16:04:05-04:00 INFO [extension_host] Rebuilding extension index at "/home/wren/.local/share/gram/extensions/index.json"
2026年07月01日T16:04:05-04:00 INFO [extension_host] from "/home/wren/.local/share/gram/extensions/installed"
2026年07月01日T16:04:05-04:00 INFO [extension_host] in "/home/wren/.local/share/gram/extensions/work"
2026年07月01日T16:04:05-04:00 INFO [extension_host] Found manifest: ExtensionManifest { id: "racket", name: "Racket", version: "0.1.1", schema_version: SchemaVersion(1), description: Some("Racket support."), repository: Some("https://github.com/zed-extensions/racket"), authors: ["Mikayla Maki <mikayla@zed.dev>"], lib: LibManifestEntry { kind: None, version: None }, themes: [], icon_themes: [], languages: [], grammars: {"racket": GrammarManifestEntry { repository: "https://github.com/zed-industries/tree-sitter-racket", rev: "beb29de2b668110e69df0c6d51649c3e2c91d863", path: None }}, language_servers: {LanguageServerName("racket-lsp"): LanguageServerManifestEntry { language: Some(LanguageName("Racket")), languages: [], language_ids: {}, code_action_kinds: None }}, snippets: None, capabilities: [], debug_adapters: {}, debug_locators: {} } (dev: false)
2026年07月01日T16:04:05-04:00 INFO [extension_host] rebuilt extension index in 3.145357ms
2026年07月01日T16:04:05-04:00 INFO [extension_host] extensions updated. loading 1, reloading 0, unloading 0
2026年07月01日T16:04:05-04:00 INFO [extensions_ui] extensions: [ExtensionManifest { id: "racket", name: "Racket", version: "0.1.1", schema_version: SchemaVersion(1), description: Some("Racket support."), repository: Some("https://github.com/zed-extensions/racket"), authors: ["Mikayla Maki <mikayla@zed.dev>"], lib: LibManifestEntry { kind: Some(Rust), version: None }, themes: [], icon_themes: [], languages: ["languages/racket"], grammars: {"racket": GrammarManifestEntry { repository: "https://github.com/zed-industries/tree-sitter-racket", rev: "beb29de2b668110e69df0c6d51649c3e2c91d863", path: None }}, language_servers: {LanguageServerName("racket-lsp"): LanguageServerManifestEntry { language: Some(LanguageName("Racket")), languages: [], language_ids: {}, code_action_kinds: None }}, snippets: None, capabilities: [], debug_adapters: {}, debug_locators: {} }]
2026年07月01日T16:04:21-04:00 INFO [extensions_ui] extensions: []
2026年07月01日T16:04:22-04:00 INFO [extensions_ui] extensions: [ExtensionManifest { id: "racket", name: "Racket", version: "0.1.1", schema_version: SchemaVersion(1), description: Some("Racket support."), repository: Some("https://github.com/zed-extensions/racket"), authors: ["Mikayla Maki <mikayla@zed.dev>"], lib: LibManifestEntry { kind: Some(Rust), version: None }, themes: [], icon_themes: [], languages: ["languages/racket"], grammars: {"racket": GrammarManifestEntry { repository: "https://github.com/zed-industries/tree-sitter-racket", rev: "beb29de2b668110e69df0c6d51649c3e2c91d863", path: None }}, language_servers: {LanguageServerName("racket-lsp"): LanguageServerManifestEntry { language: Some(LanguageName("Racket")), languages: [], language_ids: {}, code_action_kinds: None }}, snippets: None, capabilities: [], debug_adapters: {}, debug_locators: {} }]
2026年07月01日T16:04:35-04:00 WARN [zbus::proxy] Failed to populate properties cache via GetAll: org.freedesktop.DBus.Error.UnknownMethod: Object does not exist at path "/org/freedesktop/portal/desktop/request/1_187/ashpd_AsLmJz2MTc". Property change streams will not produce values.
2026年07月01日T16:04:49-04:00 INFO [gram::gram] Using GPU: GpuSpecs { is_software_emulated: false, device_name: "Intel(R) Iris(R) Xe Graphics (ADL GT2)", driver_name: "Intel open-source Mesa driver", driver_info: "Mesa 26.1.3-arch1.2" }
2026年07月01日T16:04:52-04:00 INFO [sqlez::migrations] Found 17 foreign key relationships to check
2026年07月01日T16:04:52-04:00 WARN [language] unrecognized capture name 'start-symbol' in Racket outline TreeSitter query (suppress this warning by prefixing with '_')
2026年07月01日T16:04:53-04:00 INFO [lsp] starting language server process. binary path: "/usr/bin/racket", working directory: "/home/wren/Documents/folder", args: ["-l", "racket-langserver"]
2026年07月01日T16:04:54-04:00 ERROR [project::lsp_store] Failed to start language server "racket-lsp": initializing server racket-lsp, id 0
Caused by:
 initialize failed
2026年07月01日T16:05:20-04:00 INFO [notify::inotify] unable to remove watch descriptor from inotify: Os { code: 22, kind: InvalidInput, message: "Invalid argument" }
2026年07月01日T16:05:20-04:00 INFO [lsp] starting language server process. binary path: "/usr/bin/racket", working directory: "/home/wren/Documents/folder", args: ["-l", "racket-langserver"]
2026年07月01日T16:05:21-04:00 ERROR [project::lsp_store] Failed to start language server "racket-lsp": initializing server racket-lsp, id 1
Caused by:
 initialize failed
2026年07月01日T16:05:32-04:00 INFO [lsp] starting language server process. binary path: "/usr/bin/racket", working directory: "/home/wren/Documents/Class/folder", args: ["-l", "racket-langserver"]
2026年07月01日T16:05:33-04:00 ERROR [project::lsp_store] Failed to start language server "racket-lsp": initializing server racket-lsp, id 2
Caused by:
 initialize failed

The same extension works fine in Zed (1.8.2-2, 1.9.0-1 via pacman), on the same files/directories. Replacing .local/share/gram/extensions/installed/racket/extension.wasm with .local/share/zed/extensions/installed/racket/extension.wasm (the precompiled binary offered by Zed) seems to have no effect.

I tried to use wasm-tools to dump information about the Gram- vs. Zed-compiled WASM binaries, but nothing I saw really stuck out to me (and what I stated in the previous paragraph hints that it may not be an issue with the binary). However, they certainly do differ - the Gram WASM file (attached below) is 213KiB, while the Zed WASM file is 219KiB.

Gram extension.wasm sha256: 0ca51146bf3a44ddb0b3952b6431a4e60d7d92029deab47f13ccda19f6677875
Zed extension.wasm sha256: 82e545ccf2eab6d6415e2e700f243ece0aaddc8e7774bac3db42ed9b17e38073

Arch Linux, Gram 3.0.1 (via pacman). Extension URL: https://github.com/zed-extensions/racket <details> <summary>Contents of extension.toml and Cargo.toml from .local/share/gram/extensions/installed/racket/</summary> `extension.toml` ```toml id = "racket" name = "Racket" description = "Racket support." version = "0.1.1" schema_version = 1 authors = ["Mikayla Maki <mikayla@zed.dev>"] repository = "https://github.com/zed-extensions/racket" [language_servers.racket-lsp] name = "racket-lsp" language = "Racket" [grammars.racket] repository = "https://github.com/zed-industries/tree-sitter-racket" commit = "beb29de2b668110e69df0c6d51649c3e2c91d863" ``` `Cargo.toml` ```toml [package] name = "racket" version = "0.1.1" edition = "2024" publish = false license = "Apache-2.0" [lib] path = "src/racket.rs" crate-type = ["cdylib"] [dependencies] zed_extension_api = "0.6.0" ``` </details> <details> <summary>Version details of system packages</summary> ```sh $ pacman -Q rust clang rust 1:1.96.1-1 clang 22.1.6-1 $ pacman -Qs wasm local/rust-wasm 1:1.96.1-1 WebAssembly targets for Rust local/wasm-component-ld 0.5.25-1 Command line linker for creating WebAssembly components local/wasm-tools 1.252.0-1 Low level tooling for WebAssembly in Rust $ pacman -Qs wasi local/wasi-compiler-rt 22.1.0-2 Compiler runtime libraries for clang (WASI) local/wasi-libc 1:0+592+161b3195-1 WASI libc implementation for WebAssembly ``` ```sh $ racket --version Welcome to Racket v8.18 [cs]. $ raco pkg show racket-langserver Installation-wide: [none] User-specific for installation "8.18": Package Checksum Source racket-langserver 5cbf431c8e7e62c7... catalog...erver.git $ which racket /usr/bin/racket ``` </details> After configuring my system with the appropriate packages, I installed the Racket extension via the "Install From URL" button on the extensions page. It shows no errors. However, attempting to open a Racket (.rkt) file shows an error that the Racket extension/lsp could not be started: ``` Failed to start language server "racket-lsp": initializing server racket-lsp, id 0 Caused by: initialize failed ``` <details> <summary>Gram.log</summary> ```log 2026年07月01日T16:03:37-04:00 INFO [gram] ========== starting gram 3.0.1 sha=unknown ========== 2026年07月01日T16:03:37-04:00 INFO [gpui::platform::wgpu::wgpu_context] Selected GPU adapter: "Intel(R) Iris(R) Xe Graphics (ADL GT2)" (Vulkan) 2026年07月01日T16:03:37-04:00 INFO [gpui::platform::linux::platform] activate is not implemented on Linux, ignoring the call 2026年07月01日T16:03:37-04:00 INFO [gram::gram] Using GPU: GpuSpecs { is_software_emulated: false, device_name: "Intel(R) Iris(R) Xe Graphics (ADL GT2)", driver_name: "Intel open-source Mesa driver", driver_info: "Mesa 26.1.3-arch1.2" } 2026年07月01日T16:03:37-04:00 INFO [util] set environment variables from shell:/usr/bin/bash, path:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl 2026年07月01日T16:03:39-04:00 INFO [extensions_ui] extensions: [] 2026年07月01日T16:03:43-04:00 INFO [extension::extension_builder] compile_extension: "/tmp/.tmp02PAd9racket/racket" ExtensionManifest { id: "racket", name: "Racket", version: "0.1.1", schema_version: SchemaVersion(1), description: Some("Racket support."), repository: Some("https://github.com/zed-extensions/racket"), authors: ["Mikayla Maki <mikayla@zed.dev>"], lib: LibManifestEntry { kind: Some(Rust), version: None }, themes: [], icon_themes: [], languages: ["languages/racket"], grammars: {"racket": GrammarManifestEntry { repository: "https://github.com/zed-industries/tree-sitter-racket", rev: "beb29de2b668110e69df0c6d51649c3e2c91d863", path: None }}, language_servers: {LanguageServerName("racket-lsp"): LanguageServerManifestEntry { language: Some(LanguageName("Racket")), languages: [], language_ids: {}, code_action_kinds: None }}, snippets: None, capabilities: [], debug_adapters: {}, debug_locators: {} } 2026年07月01日T16:03:43-04:00 INFO [extension::extension_builder] compiling Rust extension /tmp/.tmp02PAd9racket/racket 2026年07月01日T16:03:43-04:00 INFO [extension::extension_builder] compiling Rust crate for extension /tmp/.tmp02PAd9racket/racket 2026年07月01日T16:04:00-04:00 INFO [extension::extension_builder] compiled Rust crate for extension /tmp/.tmp02PAd9racket/racket 2026年07月01日T16:04:00-04:00 INFO [extension::extension_builder] encoding wasm component for extension /tmp/.tmp02PAd9racket/racket 2026年07月01日T16:04:00-04:00 INFO [extension::extension_builder] extension /tmp/.tmp02PAd9racket/racket written to /tmp/.tmp02PAd9racket/racket/extension.wasm 2026年07月01日T16:04:00-04:00 INFO [extension::extension_builder] compiled Rust extension /tmp/.tmp02PAd9racket/racket 2026年07月01日T16:04:00-04:00 INFO [extension::extension_builder] compiling grammar racket for extension /tmp/.tmp02PAd9racket/racket 2026年07月01日T16:04:02-04:00 INFO [extension::extension_builder] un-tarring wasi-sdk to /home/wren/.local/share/gram/extensions/build/wasi-sysroot-temp 2026年07月01日T16:04:02-04:00 INFO [extension::extension_builder] finished downloading wasi-sysroot 2026年07月01日T16:04:02-04:00 INFO [extension::extension_builder] checking out racket parser 2026年07月01日T16:04:02-04:00 INFO [extension::extension_builder] git_dir="/tmp/.tmp02PAd9racket/racket/grammars/racket/.git" 2026年07月01日T16:04:02-04:00 INFO [extension::extension_builder] checkout_repo: running git init /tmp/.tmp02PAd9racket/racket/grammars/racket 2026年07月01日T16:04:02-04:00 INFO [extension::extension_builder] checkout_repo: running git --git-dir /tmp/.tmp02PAd9racket/racket/grammars/racket/.git remote add origin https://github.com/zed-industries/tree-sitter-racket 2026年07月01日T16:04:02-04:00 INFO [extension::extension_builder] compiling racket parser 2026年07月01日T16:04:04-04:00 INFO [extension::extension_builder] compiled grammar racket for extension /tmp/.tmp02PAd9racket/racket 2026年07月01日T16:04:04-04:00 INFO [extension::extension_builder] finished compiling extension /tmp/.tmp02PAd9racket/racket 2026年07月01日T16:04:04-04:00 INFO [extension_host] Compiled "racket" to "/home/wren/.local/share/gram/extensions/installed" 2026年07月01日T16:04:04-04:00 INFO [extension_host] Now this should exist.. /home/wren/.local/share/gram/extensions/installed/racket 2026年07月01日T16:04:04-04:00 INFO [extension_host] copy_dir from=/tmp/.tmp02PAd9racket/racket, to=/home/wren/.local/share/gram/extensions/installed/racket 2026年07月01日T16:04:05-04:00 INFO [extension_host] Rebuilding extension index at "/home/wren/.local/share/gram/extensions/index.json" 2026年07月01日T16:04:05-04:00 INFO [extension_host] from "/home/wren/.local/share/gram/extensions/installed" 2026年07月01日T16:04:05-04:00 INFO [extension_host] in "/home/wren/.local/share/gram/extensions/work" 2026年07月01日T16:04:05-04:00 INFO [extension_host] Found manifest: ExtensionManifest { id: "racket", name: "Racket", version: "0.1.1", schema_version: SchemaVersion(1), description: Some("Racket support."), repository: Some("https://github.com/zed-extensions/racket"), authors: ["Mikayla Maki <mikayla@zed.dev>"], lib: LibManifestEntry { kind: None, version: None }, themes: [], icon_themes: [], languages: [], grammars: {"racket": GrammarManifestEntry { repository: "https://github.com/zed-industries/tree-sitter-racket", rev: "beb29de2b668110e69df0c6d51649c3e2c91d863", path: None }}, language_servers: {LanguageServerName("racket-lsp"): LanguageServerManifestEntry { language: Some(LanguageName("Racket")), languages: [], language_ids: {}, code_action_kinds: None }}, snippets: None, capabilities: [], debug_adapters: {}, debug_locators: {} } (dev: false) 2026年07月01日T16:04:05-04:00 INFO [extension_host] rebuilt extension index in 3.145357ms 2026年07月01日T16:04:05-04:00 INFO [extension_host] extensions updated. loading 1, reloading 0, unloading 0 2026年07月01日T16:04:05-04:00 INFO [extensions_ui] extensions: [ExtensionManifest { id: "racket", name: "Racket", version: "0.1.1", schema_version: SchemaVersion(1), description: Some("Racket support."), repository: Some("https://github.com/zed-extensions/racket"), authors: ["Mikayla Maki <mikayla@zed.dev>"], lib: LibManifestEntry { kind: Some(Rust), version: None }, themes: [], icon_themes: [], languages: ["languages/racket"], grammars: {"racket": GrammarManifestEntry { repository: "https://github.com/zed-industries/tree-sitter-racket", rev: "beb29de2b668110e69df0c6d51649c3e2c91d863", path: None }}, language_servers: {LanguageServerName("racket-lsp"): LanguageServerManifestEntry { language: Some(LanguageName("Racket")), languages: [], language_ids: {}, code_action_kinds: None }}, snippets: None, capabilities: [], debug_adapters: {}, debug_locators: {} }] 2026年07月01日T16:04:21-04:00 INFO [extensions_ui] extensions: [] 2026年07月01日T16:04:22-04:00 INFO [extensions_ui] extensions: [ExtensionManifest { id: "racket", name: "Racket", version: "0.1.1", schema_version: SchemaVersion(1), description: Some("Racket support."), repository: Some("https://github.com/zed-extensions/racket"), authors: ["Mikayla Maki <mikayla@zed.dev>"], lib: LibManifestEntry { kind: Some(Rust), version: None }, themes: [], icon_themes: [], languages: ["languages/racket"], grammars: {"racket": GrammarManifestEntry { repository: "https://github.com/zed-industries/tree-sitter-racket", rev: "beb29de2b668110e69df0c6d51649c3e2c91d863", path: None }}, language_servers: {LanguageServerName("racket-lsp"): LanguageServerManifestEntry { language: Some(LanguageName("Racket")), languages: [], language_ids: {}, code_action_kinds: None }}, snippets: None, capabilities: [], debug_adapters: {}, debug_locators: {} }] 2026年07月01日T16:04:35-04:00 WARN [zbus::proxy] Failed to populate properties cache via GetAll: org.freedesktop.DBus.Error.UnknownMethod: Object does not exist at path "/org/freedesktop/portal/desktop/request/1_187/ashpd_AsLmJz2MTc". Property change streams will not produce values. 2026年07月01日T16:04:49-04:00 INFO [gram::gram] Using GPU: GpuSpecs { is_software_emulated: false, device_name: "Intel(R) Iris(R) Xe Graphics (ADL GT2)", driver_name: "Intel open-source Mesa driver", driver_info: "Mesa 26.1.3-arch1.2" } 2026年07月01日T16:04:52-04:00 INFO [sqlez::migrations] Found 17 foreign key relationships to check 2026年07月01日T16:04:52-04:00 WARN [language] unrecognized capture name 'start-symbol' in Racket outline TreeSitter query (suppress this warning by prefixing with '_') 2026年07月01日T16:04:53-04:00 INFO [lsp] starting language server process. binary path: "/usr/bin/racket", working directory: "/home/wren/Documents/folder", args: ["-l", "racket-langserver"] 2026年07月01日T16:04:54-04:00 ERROR [project::lsp_store] Failed to start language server "racket-lsp": initializing server racket-lsp, id 0 Caused by: initialize failed 2026年07月01日T16:05:20-04:00 INFO [notify::inotify] unable to remove watch descriptor from inotify: Os { code: 22, kind: InvalidInput, message: "Invalid argument" } 2026年07月01日T16:05:20-04:00 INFO [lsp] starting language server process. binary path: "/usr/bin/racket", working directory: "/home/wren/Documents/folder", args: ["-l", "racket-langserver"] 2026年07月01日T16:05:21-04:00 ERROR [project::lsp_store] Failed to start language server "racket-lsp": initializing server racket-lsp, id 1 Caused by: initialize failed 2026年07月01日T16:05:32-04:00 INFO [lsp] starting language server process. binary path: "/usr/bin/racket", working directory: "/home/wren/Documents/Class/folder", args: ["-l", "racket-langserver"] 2026年07月01日T16:05:33-04:00 ERROR [project::lsp_store] Failed to start language server "racket-lsp": initializing server racket-lsp, id 2 Caused by: initialize failed ``` </details> The same extension works fine in Zed (`1.8.2-2`, `1.9.0-1` via pacman), on the same files/directories. Replacing `.local/share/gram/extensions/installed/racket/extension.wasm` with `.local/share/zed/extensions/installed/racket/extension.wasm` (the precompiled binary offered by Zed) seems to have no effect. I tried to use `wasm-tools` to dump information about the Gram- vs. Zed-compiled WASM binaries, but nothing I saw really stuck out to me (and what I stated in the previous paragraph hints that it may not be an issue with the binary). However, they certainly do differ - the Gram WASM file (attached below) is 213KiB, while the Zed WASM file is 219KiB. Gram extension.wasm sha256: `0ca51146bf3a44ddb0b3952b6431a4e60d7d92029deab47f13ccda19f6677875` Zed extension.wasm sha256: `82e545ccf2eab6d6415e2e700f243ece0aaddc8e7774bac3db42ed9b17e38073`

Tested the Haskell extension, seems to be comparable to this extension in terms of the extension features it uses (though it's on zed_extension_api 0.7.0) but works fine.

Tested the [Haskell extension](https://github.com/zed-extensions/haskell.git), seems to be comparable to this extension in terms of the extension features it uses (though it's on zed_extension_api 0.7.0) but works fine.

Also I do not have rustup installed, but I attempted installing this extension with rustup installed previously and it didn't work then, either.

Also I do **not** have rustup installed, but I attempted installing this extension with rustup installed previously and it didn't work then, either.
Owner
Copy link

Looks like it's using a newer version of the zed extension API than we support ATM.

Your best option right now would be to check out an older version from git and use "Install from local folder" to install it.

Looks like it's using a newer version of the zed extension API than we support ATM. Your best option right now would be to check out an older version from git and use "Install from local folder" to install it.
Owner
Copy link

Hmm, looking at the logs it actually doesn't seem like that's the problem, necessarily. It rather looks like the extension is trying to pass options to the racket LSP that it doesn't recognize. Maybe it's the racket LSP that has been changed in an incompatible way?

Then it depends on how you've installed that and which version you have, or if the extension downloaded the LSP for you.

Hmm, looking at the logs it actually doesn't seem like that's the problem, necessarily. It rather looks like the extension is trying to pass options to the racket LSP that it doesn't recognize. Maybe it's the racket LSP that has been changed in an incompatible way? Then it depends on how you've installed that and which version you have, or if the extension downloaded the LSP for you.

Hmmm, something like that. I wrote a simple wrapper script around the lsp that also logs stdin/stdout and put the script at /usr/bin/racket. Logs below.

First message sent from Gram to lsp, header omitted and formatted
{
 "jsonrpc": "2.0",
 "id": 0,
 "method": "initialize",
 "params": {
 "processId": 7266,
 "rootUri": "file:///home/wren/Documents/folder",
 "capabilities": {
 "workspace": {
 "applyEdit": true,
 "workspaceEdit": {
 "documentChanges": true,
 "resourceOperations": ["create", "rename", "delete"],
 "snippetEditSupport": true
 },
 "didChangeConfiguration": { "dynamicRegistration": true },
 "didChangeWatchedFiles": {
 "dynamicRegistration": true,
 "relativePatternSupport": true
 },
 "symbol": { "dynamicRegistration": true },
 "executeCommand": { "dynamicRegistration": true },
 "workspaceFolders": true,
 "configuration": true,
 "codeLens": { "refreshSupport": true },
 "fileOperations": {
 "dynamicRegistration": true,
 "didRename": true,
 "willRename": true
 },
 "inlayHint": { "refreshSupport": true },
 "diagnostics": { "refreshSupport": true }
 },
 "textDocument": {
 "synchronization": { "dynamicRegistration": true, "didSave": true },
 "completion": {
 "dynamicRegistration": true,
 "completionItem": {
 "snippetSupport": true,
 "documentationFormat": ["markdown", "plaintext"],
 "deprecatedSupport": true,
 "tagSupport": { "valueSet": [1] },
 "insertReplaceSupport": true,
 "resolveSupport": {
 "properties": [
 "additionalTextEdits",
 "command",
 "detail",
 "documentation"
 ]
 },
 "insertTextModeSupport": { "valueSet": [1, 2] },
 "labelDetailsSupport": true
 },
 "contextSupport": true,
 "insertTextMode": 2,
 "completionList": {
 "itemDefaults": [
 "commitCharacters",
 "editRange",
 "insertTextMode",
 "insertTextFormat",
 "data"
 ]
 }
 },
 "hover": { "dynamicRegistration": true, "contentFormat": ["markdown"] },
 "signatureHelp": {
 "dynamicRegistration": true,
 "signatureInformation": {
 "documentationFormat": ["markdown", "plaintext"],
 "parameterInformation": { "labelOffsetSupport": true },
 "activeParameterSupport": true
 }
 },
 "documentSymbol": {
 "dynamicRegistration": true,
 "hierarchicalDocumentSymbolSupport": true
 },
 "formatting": { "dynamicRegistration": true },
 "rangeFormatting": { "dynamicRegistration": true },
 "onTypeFormatting": { "dynamicRegistration": true },
 "definition": { "dynamicRegistration": true, "linkSupport": true },
 "codeAction": {
 "dynamicRegistration": true,
 "codeActionLiteralSupport": {
 "codeActionKind": { "valueSet": ["refactor", "quickfix", "source"] }
 },
 "dataSupport": true,
 "resolveSupport": {
 "properties": [
 "kind",
 "diagnostics",
 "isPreferred",
 "disabled",
 "edit",
 "command"
 ]
 }
 },
 "codeLens": { "dynamicRegistration": true },
 "colorProvider": { "dynamicRegistration": true },
 "rename": {
 "dynamicRegistration": true,
 "prepareSupport": true,
 "prepareSupportDefaultBehavior": 1
 },
 "publishDiagnostics": {
 "relatedInformation": true,
 "tagSupport": { "valueSet": [1, 2] },
 "versionSupport": true,
 "codeDescriptionSupport": true,
 "dataSupport": true
 },
 "inlayHint": {
 "dynamicRegistration": true,
 "resolveSupport": {
 "properties": [
 "textEdits",
 "tooltip",
 "label.tooltip",
 "label.location",
 "label.command"
 ]
 }
 },
 "diagnostic": {
 "dynamicRegistration": true,
 "relatedDocumentSupport": true
 }
 },
 "window": {
 "workDoneProgress": true,
 "showMessage": {
 "messageActionItem": { "additionalPropertiesSupport": true }
 }
 },
 "general": { "positionEncodings": ["utf-16"] },
 "experimental": { "serverStatusNotification": true, "localDocs": true }
 },
 "workspaceFolders": [
 {
 "uri": "file:///home/wren/Documents/folder",
 "name": ""
 }
 ],
 "clientInfo": { "name": "Gram", "version": "3.0.1" }
 }
}

Response from racket -l racket-langserver:

Content-Length: 78
{"error":{"code":-32602,"message":"initialize failed"},"id":0,"jsonrpc":"2.0"}
Diff of Gram's initialize message with Zed's initialize message
diff --git a/racket-langserver-gram.json b/racket-langserver-zed.json
index 2364e6c..8f2aa98 100644
--- a/racket-langserver-gram.json
+++ b/racket-langserver-zed.json
@@ -3,7 +3,8 @@
 "id": 0,
 "method": "initialize",
 "params": {
- "processId": 7266,
+ "processId": 7451,
+ "rootPath": "/home/wren/Documents/folder",
 "rootUri": "file:///home/wren/Documents/folder",
 "capabilities": {
 "workspace": {
@@ -22,6 +23,7 @@
 "executeCommand": { "dynamicRegistration": true },
 "workspaceFolders": true,
 "configuration": true,
+ "semanticTokens": { "refreshSupport": true },
 "codeLens": { "refreshSupport": true },
 "fileOperations": {
 "dynamicRegistration": true,
@@ -99,6 +101,7 @@
 }
 },
 "codeLens": { "dynamicRegistration": true },
+ "documentLink": { "dynamicRegistration": true, "tooltipSupport": true },
 "colorProvider": { "dynamicRegistration": true },
 "rename": {
 "dynamicRegistration": true,
@@ -112,6 +115,61 @@
 "codeDescriptionSupport": true,
 "dataSupport": true
 },
+ "foldingRange": {
+ "dynamicRegistration": true,
+ "lineFoldingOnly": false,
+ "foldingRangeKind": { "valueSet": ["comment", "region", "imports"] },
+ "foldingRange": { "collapsedText": true }
+ },
+ "semanticTokens": {
+ "dynamicRegistration": false,
+ "requests": { "full": { "delta": true } },
+ "tokenTypes": [
+ "namespace",
+ "class",
+ "enum",
+ "interface",
+ "struct",
+ "typeParameter",
+ "type",
+ "parameter",
+ "variable",
+ "property",
+ "enumMember",
+ "decorator",
+ "function",
+ "method",
+ "macro",
+ "label",
+ "comment",
+ "string",
+ "keyword",
+ "number",
+ "regexp",
+ "operator",
+ "modifier",
+ "event",
+ "lifetime"
+ ],
+ "tokenModifiers": [
+ "declaration",
+ "definition",
+ "readonly",
+ "static",
+ "deprecated",
+ "abstract",
+ "async",
+ "modification",
+ "documentation",
+ "defaultLibrary",
+ "constant"
+ ],
+ "formats": ["relative"],
+ "overlappingTokenSupport": true,
+ "multilineTokenSupport": true,
+ "serverCancelSupport": true,
+ "augmentsSyntaxTokens": true
+ },
 "inlayHint": {
 "dynamicRegistration": true,
 "resolveSupport": {
@@ -144,6 +202,6 @@
 "name": ""
 }
 ],
- "clientInfo": { "name": "Gram", "version": "3.0.1" }
+ "clientInfo": { "name": "Zed", "version": "1.9.0+stable" }
 }
 }

Interestingly, Gram doesn't include any options that Zed doesn't also include, so maybe the lsp expects something that Gram isn't giving it?

wrapper script (node.js)
#!/usr/bin/env node

const process = require('process');
const fs = require('fs');
const child_process = require('child_process');
let logIn = fs.createWriteStream('/tmp/racket-langserver-stdin.log');
let logOut = fs.createWriteStream('/tmp/racket-langserver-stdout.log');
let child = child_process.execFile('/usr/bin/racket-old', ['-l', 'racket-langserver']);
process.stdin.on('data', buf => {
	console.log('data in');
	logIn.write(buf);
	child.stdin.write(buf);
});
child.stdout.on('data', buf => {
	console.log('data out');
	logOut.write(buf);
	process.stdout.write(buf);
});
process.stdin.on('end', () => {
	console.log('finish');
	logIn.end();
	child.stdin.end();
});
child.stdout.on('end', () => {
	console.log('end');
	logOut.end();
	process.stdout.end();
});
Hmmm, something like that. I wrote a simple wrapper script around the lsp that also logs stdin/stdout and put the script at `/usr/bin/racket`. Logs below. <details> <summary> First message sent from Gram to lsp, header omitted and formatted </summary> ```json { "jsonrpc": "2.0", "id": 0, "method": "initialize", "params": { "processId": 7266, "rootUri": "file:///home/wren/Documents/folder", "capabilities": { "workspace": { "applyEdit": true, "workspaceEdit": { "documentChanges": true, "resourceOperations": ["create", "rename", "delete"], "snippetEditSupport": true }, "didChangeConfiguration": { "dynamicRegistration": true }, "didChangeWatchedFiles": { "dynamicRegistration": true, "relativePatternSupport": true }, "symbol": { "dynamicRegistration": true }, "executeCommand": { "dynamicRegistration": true }, "workspaceFolders": true, "configuration": true, "codeLens": { "refreshSupport": true }, "fileOperations": { "dynamicRegistration": true, "didRename": true, "willRename": true }, "inlayHint": { "refreshSupport": true }, "diagnostics": { "refreshSupport": true } }, "textDocument": { "synchronization": { "dynamicRegistration": true, "didSave": true }, "completion": { "dynamicRegistration": true, "completionItem": { "snippetSupport": true, "documentationFormat": ["markdown", "plaintext"], "deprecatedSupport": true, "tagSupport": { "valueSet": [1] }, "insertReplaceSupport": true, "resolveSupport": { "properties": [ "additionalTextEdits", "command", "detail", "documentation" ] }, "insertTextModeSupport": { "valueSet": [1, 2] }, "labelDetailsSupport": true }, "contextSupport": true, "insertTextMode": 2, "completionList": { "itemDefaults": [ "commitCharacters", "editRange", "insertTextMode", "insertTextFormat", "data" ] } }, "hover": { "dynamicRegistration": true, "contentFormat": ["markdown"] }, "signatureHelp": { "dynamicRegistration": true, "signatureInformation": { "documentationFormat": ["markdown", "plaintext"], "parameterInformation": { "labelOffsetSupport": true }, "activeParameterSupport": true } }, "documentSymbol": { "dynamicRegistration": true, "hierarchicalDocumentSymbolSupport": true }, "formatting": { "dynamicRegistration": true }, "rangeFormatting": { "dynamicRegistration": true }, "onTypeFormatting": { "dynamicRegistration": true }, "definition": { "dynamicRegistration": true, "linkSupport": true }, "codeAction": { "dynamicRegistration": true, "codeActionLiteralSupport": { "codeActionKind": { "valueSet": ["refactor", "quickfix", "source"] } }, "dataSupport": true, "resolveSupport": { "properties": [ "kind", "diagnostics", "isPreferred", "disabled", "edit", "command" ] } }, "codeLens": { "dynamicRegistration": true }, "colorProvider": { "dynamicRegistration": true }, "rename": { "dynamicRegistration": true, "prepareSupport": true, "prepareSupportDefaultBehavior": 1 }, "publishDiagnostics": { "relatedInformation": true, "tagSupport": { "valueSet": [1, 2] }, "versionSupport": true, "codeDescriptionSupport": true, "dataSupport": true }, "inlayHint": { "dynamicRegistration": true, "resolveSupport": { "properties": [ "textEdits", "tooltip", "label.tooltip", "label.location", "label.command" ] } }, "diagnostic": { "dynamicRegistration": true, "relatedDocumentSupport": true } }, "window": { "workDoneProgress": true, "showMessage": { "messageActionItem": { "additionalPropertiesSupport": true } } }, "general": { "positionEncodings": ["utf-16"] }, "experimental": { "serverStatusNotification": true, "localDocs": true } }, "workspaceFolders": [ { "uri": "file:///home/wren/Documents/folder", "name": "" } ], "clientInfo": { "name": "Gram", "version": "3.0.1" } } } ``` </details> Response from `racket -l racket-langserver`: ```json Content-Length: 78 {"error":{"code":-32602,"message":"initialize failed"},"id":0,"jsonrpc":"2.0"} ``` <details> <summary> Diff of Gram's initialize message with Zed's initialize message </summary> ```diff diff --git a/racket-langserver-gram.json b/racket-langserver-zed.json index 2364e6c..8f2aa98 100644 --- a/racket-langserver-gram.json +++ b/racket-langserver-zed.json @@ -3,7 +3,8 @@ "id": 0, "method": "initialize", "params": { - "processId": 7266, + "processId": 7451, + "rootPath": "/home/wren/Documents/folder", "rootUri": "file:///home/wren/Documents/folder", "capabilities": { "workspace": { @@ -22,6 +23,7 @@ "executeCommand": { "dynamicRegistration": true }, "workspaceFolders": true, "configuration": true, + "semanticTokens": { "refreshSupport": true }, "codeLens": { "refreshSupport": true }, "fileOperations": { "dynamicRegistration": true, @@ -99,6 +101,7 @@ } }, "codeLens": { "dynamicRegistration": true }, + "documentLink": { "dynamicRegistration": true, "tooltipSupport": true }, "colorProvider": { "dynamicRegistration": true }, "rename": { "dynamicRegistration": true, @@ -112,6 +115,61 @@ "codeDescriptionSupport": true, "dataSupport": true }, + "foldingRange": { + "dynamicRegistration": true, + "lineFoldingOnly": false, + "foldingRangeKind": { "valueSet": ["comment", "region", "imports"] }, + "foldingRange": { "collapsedText": true } + }, + "semanticTokens": { + "dynamicRegistration": false, + "requests": { "full": { "delta": true } }, + "tokenTypes": [ + "namespace", + "class", + "enum", + "interface", + "struct", + "typeParameter", + "type", + "parameter", + "variable", + "property", + "enumMember", + "decorator", + "function", + "method", + "macro", + "label", + "comment", + "string", + "keyword", + "number", + "regexp", + "operator", + "modifier", + "event", + "lifetime" + ], + "tokenModifiers": [ + "declaration", + "definition", + "readonly", + "static", + "deprecated", + "abstract", + "async", + "modification", + "documentation", + "defaultLibrary", + "constant" + ], + "formats": ["relative"], + "overlappingTokenSupport": true, + "multilineTokenSupport": true, + "serverCancelSupport": true, + "augmentsSyntaxTokens": true + }, "inlayHint": { "dynamicRegistration": true, "resolveSupport": { @@ -144,6 +202,6 @@ "name": "" } ], - "clientInfo": { "name": "Gram", "version": "3.0.1" } + "clientInfo": { "name": "Zed", "version": "1.9.0+stable" } } } ``` </details> Interestingly, Gram doesn't include any options that Zed doesn't also include, so maybe the lsp expects something that Gram isn't giving it? <details> <summary> wrapper script (node.js) </summary> ```js #!/usr/bin/env node const process = require('process'); const fs = require('fs'); const child_process = require('child_process'); let logIn = fs.createWriteStream('/tmp/racket-langserver-stdin.log'); let logOut = fs.createWriteStream('/tmp/racket-langserver-stdout.log'); let child = child_process.execFile('/usr/bin/racket-old', ['-l', 'racket-langserver']); process.stdin.on('data', buf => { console.log('data in'); logIn.write(buf); child.stdin.write(buf); }); child.stdout.on('data', buf => { console.log('data out'); logOut.write(buf); process.stdout.write(buf); }); process.stdin.on('end', () => { console.log('finish'); logIn.end(); child.stdin.end(); }); child.stdout.on('end', () => { console.log('end'); logOut.end(); process.stdout.end(); }); ``` </details>

Ahhh, I think the lsp is expecting rootUri and rootPath. Gram only provides rootUri; Zed provides both. Could this (i.e. rootPath) be added?

github.com/jeapostrophe/racket-langserver@ab61d6b38a/lsp/methods.rkt (L216)

Ahhh, I think the lsp is expecting `rootUri` and `rootPath`. Gram only provides `rootUri`; Zed provides both. Could this (i.e. `rootPath`) be added? https://github.com/jeapostrophe/racket-langserver/blob/ab61d6b38a1d7fffd35024241433c62b38681a8c/lsp/methods.rkt#L216

See https://github.com/zed-industries/zed/pull/48587 for (I think) the corresponding PR that added rootPath to Zed.

See https://github.com/zed-industries/zed/pull/48587 for (I think) the corresponding PR that added `rootPath` to Zed.
Owner
Copy link

Ah, great find. I'll check it out!

Ah, great find. I'll check it out!
Owner
Copy link

Merged the Zed fix, hopefully that solves it. Thank you!

Merged the Zed fix, hopefully that solves it. Thank you!

Just built the latest commit (ce530236db) using a PKGBUILD that's a combination of extra/gram and aur/gram-git, took forever to build but a quick test shows that the Racket extension works fine. Thanks!

Just built the latest commit (https://codeberg.org/GramEditor/gram/commit/ce530236db771e19660ff9cb8667358223f6203c) using a PKGBUILD that's a combination of [extra/gram](https://gitlab.archlinux.org/archlinux/packaging/packages/gram/-/blob/main/PKGBUILD) and [aur/gram-git](https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=gram-git), took forever to build but a quick test shows that the Racket extension works fine. Thanks!
Sign in to join this conversation.
main
main
test/wgpu-on-mac
test-ci/failing-test-mac
test/failing-test-mac
test/build-on-22-04
test/wgpu-present-mode-mailbox
v2.1
test/altgr-fix-again
test/2.0.0-rc1
test/linux-build
test/objc2
v1.2.1
3.0.1
3.0.0
2.2.0
2.1.2
2.1.1
2.1.0
2.0.0
1.2.1
1.2.0
1.1.0
1.0.0
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
GramEditor/gram#362
Reference in a new issue
GramEditor/gram
No description provided.
Delete branch "%!s()"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?