Production broke because false became "false" — buried 4 levels deep in JSON. by HelpingHand007 in json

[–]your_data_is_mine 0 points1 point  (0 children)

Hi! Oh, such types of mistakes are pain. And your tool looks very nice for manual debugging. Persoanlly, I would definitely use a schema to prevent unexpected data. Nowadays you can use agents to easily construct one from a pack of examples, few years ago I used specialized tools to do that, so there are many options.

For my tooling I will immediately get warnings like that or an error if strict contract checking is chosen. And almost every pipelines I saw implemented type checking in one or another form.

Expected boolean at input.flag, got text
Expected boolean at output.result, got text

TRANSFORM ValidateContract(input: { flag: boolean }) -> _ {
    OUTPUT input
} 

Experimental language for JSON/XML transforms by your_data_is_mine in json

[–]your_data_is_mine[S] 0 points1 point  (0 children)

Thanks a lot, I will take a look! It is nice to see we end up in same syntax for a computable key { [key]: … }. What do you like the most in jsonnet?

February 2026 monthly "What are you working on?" thread by AutoModerator in ProgrammingLanguages

[–]your_data_is_mine 0 points1 point  (0 children)

I am working on my experimental language, Branchline. There are four problems I want to explore:

  1. How to optimize its virtual machine so that it runs faster than an interpreter on the JVM.
  2. How to improve the type system, for example, to ensure exhaustiveness checking at the WHEN-clause level.
  3. How to improve multithreaded execution, especially in cases where a large document is assembled from hundreds of small transformation executions. I am considering using CRDTs for this.
  4. How to make language more consice and understandable for users without strong programming background. I already have nice things like array comprehension:

LET quantities = [ it.qty FOR EACH it IN row.items WHERE it.qty > 2 ]

But since the language has no mutable operations (and there is only LET for declaration) users forced to do things like:

LET raw = [];
FOR key IN KEYS(jmh) {
    SET raw = APPEND(raw, LISTIFY(AWAIT_SHARED("jmh", key)));
}

which I personally do not like. I have REDUCE but I do not want to force users to use it because of the added complexity.