SOML will das Beste aus JSON und YAML vereinen – ohne die Typ-Fallen

SOML – A Config Format for Humans

SOML, kurz für Sindre's Objectively Marvelous Language, ist ein neues Konfigurationsformat, das die Lesbarkeit von YAML mit der Strenge von JSON verbinden soll. Der Kern: Der Typ eines Werts ergibt sich allein aus seiner Syntax, nie aus seinem Inhalt. So bleibt '123' ein String und 123 ein Integer, country: no ist ein Fehler statt false, und version: 3.10 wird nicht stillschweigend zu 3.1. Dazu kommen echte Datums-, Zeit- und Dauerwerte, Block-Strings ohne Escaping und eine kanonische Form. Die Spezifikation ist noch ein Entwurf.

In PyYAML (YAML 1.1) ist country: no gleich false, zip: 01234 ist oktal 668, und time: 22:22 ist Basis-60 1342.
  1. layer8

    > what you see is what you get: […] '10.20' und 10.20 sind ein String und ein Float, genau wie geschrieben.

    Das scheint sowohl unterspezifiziert als auch falsch zu sein. Angenommen, es handelt sich um eine binäre IEEE-754-Gleitkommazahl mit einfacher Genauigkeit, dann ist 10.20 tatsächlich 10.19999980926513671875. Mit doppelter Genauigkeit wäre es 10.199999999999999289457264239899814128875732421875. Was du siehst, ist also nicht, was du bekommst, und es ist auch unklar, was genau du bekommen wirst.

    > Der Typ eines Werts ergibt sich aus seiner Syntax, niemals aus seinem Inhalt […] allowed-origins: [

    'https://example.com'

    'https://example.org'

    ]

    Das sieht nach URLs aus, sind aber Strings. Was wäre, wenn du Folgendes hättest:

    > allowed-origins: [

    'httpș://example.com'

    'ħttps://example.org'

    ]

    Immer noch Strings und daher für den SOML-Parser in Ordnung, aber wahrscheinlich keine gültige Konfiguration in Bezug auf die Typen der Werte auf Anwendungsebene. Die Syntax, die dir die Typen verrät, ist von begrenztem Nutzen, sobald das Anwendungsschema spezifischere Vorstellungen von den Typen hat als die Konfigurationssprache.

  2. lightandlight

    Ironischerweise scheint das Projekt von einem LLM generiert worden zu sein.

    Ich möchte nicht Claudes Interpretation davon lesen, warum dein Projekt wichtig ist. Ich möchte, dass du es mir direkt sagst.

  3. ActionHank

    Um ehrlich zu sein: Immer wenn es eine Lösung gibt, die etwas „menschlicher“ macht, wurde einfach die Struktur / Syntax entfernt.

    Ich vermute, damit man sie nicht lernen muss, sodass jeder von der Straße die Dateien bearbeiten kann, aber ohne diese Leitplanken wird es so richtig kaputtgehen, meist auf eine nicht offensichtliche Weise.

    Das führt uns zurück dazu, irgendein neues „menschliches“ Ding zu erfinden, aber mit mehr impliziten Regeln, und der Kreislauf geht weiter.

  4. mofle

    Hallo zusammen. Ich bin derjenige, der daran arbeitet (ein Mensch). Es ist noch früh. Es ist etwas, das ich mir seit vielen Jahren gewünscht habe, aber ich hatte nie die Zeit, mich darum zu kümmern, bis jetzt.

    Es treibt bereits das Frontmatter meiner Website an: https://github.com/sindresorhus/sindresorhus.github.com/blob...

  5. james_marks

    Vom Titel her dachte ich, das sei eine Spezifikation für die Konfiguration von Menschen. Ich weiß nicht so recht, was das bedeuten soll, und ich bin immer noch enttäuscht, es nicht zu wissen.

Mehr von diesem Tag

2026-11-02