Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Improve signal 13 (SIGPIPE) handling in basic-cli

Offen
#476 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
52/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
rust
Bereich
cli

Rechercherichtung

Beginnen Sie damit, das Problem mit der bereitgestellten test.roc und den set -o pipefail-Befehlen zu reproduzieren, und vergleichen Sie anschließend roc test.roc mit der von roc build erstellten ausführbaren Datei. Verfolgen Sie, ob die SIGPIPE-Diagnose von basic-cli oder vom Roc-Compiler stammt. Die Aufgabe ist abgeschlossen, wenn das Verhalten bei der Behandlung und der für den Aufrufer sichtbare Fehler geklärt sind und die unerwünschte Diagnose behoben ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Seems like basic-cli does not handle SIGPIPE well. I'm not sure if this is one issue or two. Is compiler diagnostic redundant because it doesn't happen on the executable? And should broken pipe error be propagated to the caller?

Example worth thousands of words:

How to reproduce it

test.roc

app [main!] {
    cli: platform "https://github.com/roc-lang/basic-cli/releases/download/0.21.0/4rAQg8kUYZ3Vksr4qMQHpaFYNiHSn9GgS7gVxghd1XYV.tar.zst",
}

import cli.Stdout

main! = |_args| write_lines!(100000)

write_lines! = |remaining| {
    if remaining == 0 {
        Ok({})
    } else {
        Stdout.line!("line")?
        write_lines!(remaining - 1)
    }
}

Run:

set -o pipefail
roc test.roc | head -n 1
echo $?

Get this result:

line
The program was killed by signal 13: Unknown signal.

This is likely a bug in the Roc compiler.
...
141

Note that executable (not roc run) works and returns 141 without any errors:

roc build test.roc
set -o pipefail
./test | head -n 1
echo $?
Vorherrschende Sprache
Rust
Sterne
121
Forks
45
Ø Merge
19 Std. 1 Min.
Gemergte PRs (30 T.)
16

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus roc-lang/basic-cli

Alle Issues in roc-lang/basic-cli

Ähnliche Issues

Weitere Issues zu Rust

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.