Show HN: Wyzer Programming Language

(github.com)

64 points | by v0id_isgood 3 hours ago

14 comments

  • vlovich123 48 minutes ago
    One thing I don’t understand is how you can guarantee the lack of a distributed deadlock. I’m sure it’s covered in the underlying research, but just conceptually it’s hard to picture.

    What stops a choreography where Claire send a message to Bob but Bob is waiting for Alice and Alice is waiting for Claire?

    Is it like Rust memory safety where not all valid programs are accepted but all invalid programs are rejected?

    I think some examples of the distributed code in action on a trivial and non trivial distributed example is more compelling than a 3d donut render

    • minraws 8 minutes ago
      You can think about it as a protocol.

      The protocol doesn't describe "Claire sends" and "Bob receives" as two independent actions that wait for each other, it describes them as a single communication in the global program/state.

      When it gets executed into code, every send already has a corresponding receive by construction, so you can't write something like "Claire sends to Bob while Bob is actually waiting for Alice" unless the protocol itself allowed that execution.

      So the cycle you're describing can't just accidentally appear because of sync issues, because the assumption is a communication is represented correctly at each turn.

      So yeah it kinda does limit the set of all possible programs since I would expect not everything can be encoded this way also seems hard to resolve this in practice without only allowing communication b/w Wyzer systems.

      I am not very familiar with this topic in practice so OP would be the best person to answer this, I am quite intrigued by how it works in practice as well.

  • hyperhello 1 hour ago
    First of all, the syntax is very generic and conservative. I’m extremely positive about that. It just looks like C or Typescript or Java to me and I don’t see mysterious diacritical marks.

    The next thing is, I need more examples. Read me documents can scroll forever and that’s fine. Add examples for every concept your language wants to cover to it. This is your chance to think things through and make the read me and the language astonishing.

    And your AI disclaimer (or your AI’s disclaimer) makes sense.

    • v0id_isgood 1 hour ago
      i'm actively working on the documentation without AI because it has been an awful experience with it , i've also restricted AI from contributing to it in any way except for helping the developer write their commit messages (Refer to AGENTS.md) properly which is pretty much useless anyways, the language is in it's early stages as well and things might change a lot
    • v0id_isgood 1 hour ago
      also , yes i have an example i reprogrammed donut.c in my programming language and called it donut.wyz https://github.com/rudywasfound/donut.wyz go check it out!
  • jitl 1 hour ago
    Your README and docs don’t describe any of the interesting or unique things here. You cover `if` in README but not choreographic programming or perceus. Did i miss some big link?

    Where’s the cool stuff?

    • v0id_isgood 1 hour ago
      you did read RESEARCH.md didn't you? :)
      • jitl 1 hour ago
        i poked around in there, under choreographic programming there’s one example of something not in the language as a discarded idea.

        if you claim X and Y make us cool and different, then you should document X and Y in your readme. don’t tell me something is the star, and then hide it away. this is baffling to me.

        • polymer8563 23 minutes ago
          its speaking of discarded syntax for choreo, not that the feature was discarded
      • andai 46 minutes ago
        GitHub hides RESEARCH.md for my convenience. I have to click "Show All Files" to see that it even exists.
      • derdi 1 hour ago
        Why would they? The only thing the readme says about RESEARCH.md is "if you want to contribute to the language please read RESEARCH.md". The OP doesn't want to contribute, they want to see an example of choreographic programming. This shouldn't be hard. What is hard is guessing which of the random markdown documents to click to find an example.
  • bckr 9 minutes ago
    I like the ideas a lot. The Readme needs some polish (I think it’s great that it reads as hand-written; an LLM could make suggestions that make it just 10% easier to read).

    Is choreographic programming the same as session types?

  • hmokiguess 45 minutes ago
    I saw this medium post from you https://medium.com/@atixwasfound/how-i-began-writing-my-own-...

    In there it says you started this journey when you were 8 years old and that you are a 14 year old programmer

    I'm not sure how I feel about this to be honest, I need to process that.

    • v0id_isgood 36 minutes ago
      time flies :) the grass was greener before though and i miss that!
  • netniuq 9 minutes ago
    nice Rust-inspired syntax, although if the main selling point is choreography here, that isn't featured enough on web page or README. Needs more examples/explanation of how that works.

    Promising insofar as all of the essentials seem to be right (for me): compiled, good type checker, no garbage checker etc.

  • steeleduncan 29 minutes ago

        const MAX: u32 = 100;  // Compile-time constant
        let x: u32 = 10;       // Cannot be changed
    
    If x cannot be changed, how does it differ (meaningfully) from a compile time constant in a safe language, ie in a case of no raw pointers
    • v0id_isgood 16 minutes ago
      const can be used in places that need a compile-time-known value (like a fixed array size). let can't, even if it obviously holds a fixed number.
  • pjmlp 17 minutes ago
    No mention of the much more mature Chapel, with industry support, given the domain?
  • andai 41 minutes ago
    Very interesting. Maybe this would benefit from concrete examples, of things that are difficult or impossible in other languages, but well supported in Wyzer? I see there's a few high level examples, but I'm thinking concrete scenarios with code snippets might be helpful.
  • pmarreck 29 minutes ago
    > prentensious quote

    It's "pretentious."

    (said pretentiously, lol)

    Hey, at least we know AI didn't write it, lol

  • manithree 1 hour ago
    docs.wyzer-lang.org doesn't resolve for me, and it's prominently linked from https://wyzer-lang.vercel.app/. Since I'm not familiar with wyzer or perceus, how would one write, say, a doubly linked list in wyzer?
    • v0id_isgood 1 hour ago
      docs are under development, you can check them out soon :)
      • thomasmg 35 minutes ago
        Great. I'm also writing a new language with the same memory management idea (Perceus-style reference counting / ownership). My language [1] is not functional and currently lacks multi-threading and networking, so there are big differences. But I really like the moto "easy to use memory safety without tracing GC".

        [1] https://github.com/thomasmueller/bau-lang/tree/main

      • jitl 58 minutes ago
        maybe wait until you have something to share before Show HN? overall your work seems like a cool thing that i’d like to look at in a few months once there’s more substantial education stuff to read about it.
  • REDA_MAH 44 minutes ago
    The syntax is soooo promising but still we need more documentation. Good job anyway for doing such an amazing work with no ai
  • kazinator 23 minutes ago
    Compiler should be called Bud.

    Made an error? Hold your beer, Bud's got your back: the Bud Wyzer compiler!

  • vsilent 1 hour ago
    syntax reminds me rust labguage.
    • v0id_isgood 1 hour ago
      this is a pretty common observation and yeah it sure is inspired by rust's syntax a bit because i have been a rust dev since quite a long time so i'm much more in favor of it's design philosophy as well