l: A new runtime for k and q

(lv1.sh)

173 points | by skruger 2 days ago ago

109 comments

  • enduku 2 days ago ago

    yeah the site's clearly vibecoded and isn't opensource, but i also think this is a genuinely interesting design space and more people should be building in it. APL (https://www.dyalog.com/), BQN (https://mlochbaum.github.io/BQN/), J/Jd (https://code.jsoftware.com/wiki/Jd/Overview), Klong (https://news.ycombinator.com/item?id=10586872), Kerf (https://news.ycombinator.com/item?id=9782520), RayforceDB (https://news.ycombinator.com/item?id=45889607), k/q (https://kx.com/) glad there's a new entrant.

    • jackdoe 2 days ago ago

      I vibecoded https://punkx.org/apl/learn.html [1] its good slow entry into gnu-apl, at least it got me to be able to make tictactoe, vibecoded or not, it helped me to start.

      I am amazed how quickly APL changed the way I think.

      Also strongly recommend watching Aaron Hsu on youtube.

      There is no better time to re-learn programming, try APL, Forth, LISP, z80 machine code, UXN TAL, just try new things.

      "Men are born soft and supple; dead they are stiff and hard. Plants are born tender and pliant; dead, they are brittle and dry. Thus whoever is stiff and inflexible is a disciple of death. Whoever is soft and yielding is a disciple of life. The hard and stiff will be broken. The soft and supple will prevail."

      [1]: https://github.com/jackdoe/gnu-apl-wasm source of the repl and learn playground and also how to compile gnu apl to wasm (vibecoded)

      • johanvts a day ago ago

        APL is cool, but that quote hurts my brain. Disregard the funny typo, clearly different situations call for different strategies. For example, it might be great to use LLM slop interactively while learning, but that doesn’t mean it can be used as a finished product.

    • zX41ZdbW 2 days ago ago

      I've recently tested BQN on ClickBench (a benchmark for OLAP databases), and the results are not great: https://benchmark.clickhouse.com/#system=+N|liH&type=-&machi...

      If anyone is curious how queries in this language look, you can see it here: https://github.com/ClickHouse/ClickBench/pull/939/changes#di...

      • dzaima 2 days ago ago

        FYI, your "8‿64 •bit._cast -⟜@ raw" in bqn/util.bqn results in passing to •bit._cast integers in the range 0..255, whereas it expects integers ¯128..127 (and does arbitrary platform-specific things on integers outside that for the int16→int8 narrow); removing the "-⟜@" makes it work properly, and 2.5-5x faster while at it from not going to intermediate int16 (allowing the bitcast to be O(1) by itself). (•FBytes → •file.MapBytes also probably improves things, at the cost of the obvious mmap problem of issues if the file changes, as BQNs arrays are immutable). This is also what caused the problem at https://github.com/ClickHouse/ClickBench/pull/939/changes/40... (there's been some discussion about what to do about invalid •bit._cast before, considering it's rather perf-sensitive; it's the only place in CBQN with such quiet very-wrong results on invalid inputs)

        The default CBQN "make o3" on x86-64 also results in it only using SSE2 (utilizing function multiversioning is on the ever-infinite TODO list, though somewhat-low on it considering it's strictly-unnecessary in any specific situation; there's also AVX-512 usage on a branch, but mostly only AVX2 on mainline; and no arm SVE)

        That all said, CBQN doesn't currently do any loop fusion, so being significantly-slower for sequences of operations over larger-than-cache arrays would kinda just be expected. BQN also just isn't particularly intended for database work anyway.

        (didn't look much at the specific query impls, though "Pair" in utils.bqn is at least an overlong version of "Pair ← ⋈¨"; and some if not all of those Pairs would be better as "≍˘" to avoid nested arrays and ensuing pointer chasing; and, of course, if some of the columns are bools/int8/int16/int32, it'd be beneficial to store & load them as such instead of float64)

        • jloveless 2 days ago ago

          BQN & CBQN are absolutely wonderful pieces of code. L is mac/lin but linux is avx512 only specifically to try to deal with that problem. The compute on compressed algos helps fit more in those cache lines! https://lv1.sh/blog/compute-on-compressed/

      • jloveless 2 days ago ago
    • hoppp a day ago ago

      The bottom of the page states:

      "Site by Claude. Runtime by hand"

      I think that's completely acceptable.

      • throwaway2037 a day ago ago

        I agree 100%! If anything, I would encourage the site owner to increase the font size on that message. There is no shame to be vibecoding simple websites in 2026. IMHO: It takes away nothing from project. Also, I really like the second part: "Runtime by hand." That's cool in 2026 in the era of AI slop.

    • kensai 2 days ago ago

      What's the problem if a site is vibecoded? We will be seeing it more often, I recon. Let's get used to it. On the other hand, perhaps a disclaimer is in order.

      • itishappy 2 days ago ago

        It's a strong signal of unknown quality. Caveat emptor. Closed-source makes that extra difficult.

        We are used to this, hence why folks here point it out.

        • jloveless a day ago ago

          For QC this is a pretty solid tester (run on L or other compatible runtime) - focused on performance as it pushes multiple edges.

          https://github.com/l-labs/master-benchmark

          Which can also be run with minimal modifications on ngn and others.

          For database the h2o.ai for duckDB really is a solid hard bench IMHO:

          https://github.com/l-labs/db-benchmark/tree/main/l

        • dragonwriter a day ago ago

          “It's a strong signal of unknown quality.”

          Unknown quality is the absence of information, you can’t have a signal for it.

          If you are using “unknown” as a euphemism for “poor”, which is the most obvious thing that makes the signal meaningful in the direction that seems apparent from context, why?.

          • cygx a day ago ago

            Phrased differently, they claimed that the entropy of the distribution of some quality metric tends to be higher on the domain of projects with vibecoded sites compared to the domain of projects with handcrafted sites.

            • naasking a day ago ago

              I don't believe for one second that this metric has been rigourously evaluated, it's also just based on vibes.

              • cygx a day ago ago

                Sure. Doesn't mean the statement itself was nonsense, as the post I replied to implied...

          • itishappy 19 hours ago ago

            I explicitly do not mean "poor," that's why I choose "unknown." A better word would have been "variable." The point I intend to convey is that you need to use other signals to judge.

            That's also why "closed-source" was mentioned in the same sentence. Two missing signals.

            That's also why the author keeps pointing to the benchmarks and test suite, which is the signal they'd like us to judge by. Seems entirely reasonable to me!

      • nemothekid 2 days ago ago

        >What's the problem if a site is vibecoded?

        Typically if a site is well designed, that used to be a signal that a lot of resources had been invested into the project. Now that signal is rather noisy.

        Here, is particularly bad, as the main page is just complete slop bullet points. What does 'end-to-end column compression' mean? or 'uniform bytes at every layer'?

        It's difficult to understand at a glance now, if this project is going to be abandonware in a week or if someone actually spending time on this. If the creator can't be bothered to read it, why should I?

        Personally, I'm also very weary of Claude design-isms. Once you learn them, you see them everywhere.

        • jloveless a day ago ago

          fair point. I am not a front end designer and I did want something less spartan than proverbial q.txt [1] . To be honest - many folks in the community have had access for some time , and a website was just put up this week as a 'larger community access'.

          That said the mail group has more details and the blog posts are effectively internal posts turned into shorter (less code) versions. The binary itself is years of effort - with small improvements over many years and shaving a few kb each time ... 'built the old way' like amish furniture :)

          [1] https://web.archive.org/web/20160306154854/http://kx.com/q/d...

      • jloveless 2 days ago ago

        there's one in the footer and agree.

    • Onavo 2 days ago ago

      I hope OP can survive the lawsuits though, the K authors are infamously litigious.

      • macmac 2 days ago ago

        Interesting, references?

        • Onavo a day ago ago

          Look online for Kx systems history of IP enforcement and legal threats. They are well known in the quant community for essentially being the Disney of time series databases. Nice tech yes, but the people behind it hold values that are typically diametrically opposite of hacker ethos. Good riddance.

    • quotemstr 2 days ago ago

      ... DuckDB.

      Columnar databases are array languages, after all.

      • jloveless 2 days ago ago

        duckdb is great and its h2o.ai benchmark was difficult to beat!

  • kristjansson 2 days ago ago

    Quite cool, but for a new runtime of an existing language it might make sense to compare to, y'know, the other[0] runtimes of that language? Even if one has to omit the best, closed ones for lack of access / permission to benchmark?

    [0]: https://k.miraheze.org/wiki/Running_K

  • lioeters 2 days ago ago

    Closed source (and vibe-coded) software, especially for a language runtime, is a non-starter for many people including myself. But proprietary license is actually common in the APL and K family of languages. They are fascinating though, and plenty of free/open implemenations exist, for example: https://ktye.github.io/

    • jazza68 2 days ago ago

      the author of the site makes no secret that the website is vibecoded. You're unfairly extrapolating that the product itself is vibe-coded (hard to do unless he is a time-traveller). And you're missing the point of the unique advantages that L offers wrt computation on compressed data.

      • jloveless 2 days ago ago

        yup website is Claude Design for prototype. For the core ... AI has been less helpful than I hoped - I believe largely because array style languages have so little source in training? But where Claude was especially helpful (other than the web design w/ Claude Design for the prototype) was analyzing ASM output of functions and optimizing those (although it was hard to go ASM>C or ASM>rust). E.g. lots of small mistakes would have been missed by not having restrict/const in places. Claude was great at compile all functions, analyze ASM, suggest optimized ASM (and ASM2vec was helpful as well for finding any "similar" code paths that could be combined (e.g. var/dev/cov are just moments)

        • throwaway2037 a day ago ago

              > But where Claude was especially helpful (other than the web design w/ Claude Design for the prototype) was analyzing ASM output of functions and optimizing those E.g. lots of small mistakes would have been missed by not having restrict/const in places.
          
          This is very interesting. It would be worth a separate blog post. I'm sure it would trend well on HN!
      • lioeters 2 days ago ago

        Fair enough. Without seeing the code itself, one can only judge the book by its cover. I'm interested, but maybe not quite the target audience.

        • jloveless 2 days ago ago

          give it a spin! download is ~500kb for mac. It is however targeting folks who come from that world - but K/Q are absolutely worth exploring!

        • jloveless 2 days ago ago

          Unfortunately the code itself is in a style of C many find difficult to read. I blame my upbringing. ATW open sourced examples and it was not really helpful. More recently others are doing a step by step in more standard C https://github.com/ardentsia-cgs/kparser/

          • hatefulmoron a day ago ago

            Isn't that "more standard C" because it's written by Claude?

            • AUnterrainer a day ago ago

              Arthur Whitney's C is everything but standard

              • pillmillipedes a day ago ago

                talking about the linked parser which is clearly claude's not arthur's

              • hatefulmoron a day ago ago

                Not sure how you're replying to me without looking at the link.

            • jazza68 a day ago ago

              this page/site seems fascinated with Claude, to the point where it is an unnecessary distraction.

  • throwaway2037 a day ago ago

    First, this is an incredible achievement. I hope that the author(s) can monetize this project. I guess they can try to undercut kx.com's current insanely high subscription costs. Is that a goal? I ask because I cannot find the source code for the project, only downloadable compiled binaries. (No hate on that -- you are free to make lots of money from your hard work and apparent genius!)

    Second, in my personal experience, most quants refer to the platform as "kdb+", which uses the languages q (directly), k (indirectly), and qSQL. Is there a reason why the website landing page does not mention kdb+? I assume this is intentional.

    • jloveless a day ago ago

      intentional. I consider kdb/kdb+ to be understood as the KX products - but L runs the same database style functionality (the qSQL is essentially just sugar atop the q/k code. Most of which is written in k [or C in L for a number of components])

  • zacharynewton 2 days ago ago

    Not sure why all the hate (sure site may be vibecoded, not all of us are front-end masters and it's at least not spartan)... I've always found k to be fascinating, and cool idea to try and roll a new one. Wish it were wholly open source, but cool to have a new variant that seems to bench well.

    • casey2 2 days ago ago

      Sure the site, the articles, the program. But sure lets just trust that the author who can't write knows how to benchmark software

      • jloveless 2 days ago ago

        Not a web dev - but have some experience in benchmarking these types of workloads e.g. https://www.mcobject.com/press/november19-2014/

        L used the two open ones that are easy to replicate: H2O.ai (great bench) https://github.com/l-labs/db-benchmark TSBS (less great but useful) https://github.com/l-labs/tsbs

        If there are others (will do ClickBench) they'll go there as well

      • joshjob42 2 days ago ago

        I mean do a bunch of simulation work and statistics stuff but now jack about website design, so if I ever make a website about any project of mine it'll be vibedcoded or a barebones export of an org file README on github. Websites have little bearing on programming language runtime development, no?

        • AUnterrainer a day ago ago

          maybe all the haters can't do anything but web dev

  • jazza68 2 days ago ago

    q is the programming language underpinning kdb+ by Kx Systems - often claimed (by Kx) to be "the fastest database in the world". Possibly also the most expensive? L is an independent implementation of a q interpreter. To those who reluctantly commercially license kdb+ - this will be a welcome alternative.

    • dintech 2 days ago ago

      Absolutely and given Kx is now private equity owned and are in the customer-squeezing phase of the acquisition, this is very welcome indeed.

      • jloveless 2 days ago ago

        and fusion (e.g. f g h x has no intermediates e.g. mutates in place) is new as is compute on compressed vectors (very helpful performance unlock) https://lv1.sh/blog/compute-on-compressed/

        • pillmillipedes 2 days ago ago

          [1] seems to have the actual details on compressed vectors. looks like for each page you're storing min&max, and the values come as offsets from the min (smaller->less bits per value), did I get that right?

            primitive speedup  
            sum price 7.7x  
            avg price 33x
          
          how does this even happen though?

          [1]https://lv1.sh/blog/compression-memory-wall/

          • jloveless 2 days ago ago

            simple example at https://lv1.sh/blog/compute-on-compressed/ But in general compression is reducing the bit width of the input through an encoder (FOR or Frame of Reference is an old and good example). So we store the base in an offset location then the large payload is a much smaller size. E.g. i64 can goto i16. Then simd gets more #'s per cycle on the smaller, and the base is added to the scratch in stack (for sum). avg is similar (since it is just sum / count)

          • jloveless 2 days ago ago

            there's even a secret -17!`name that will show the details. e.g.

              //100k random 32b ints ... 
              l>v:100000?255
              l>v
              196 124 18 216 63 169 151 173 126 99 90 133 92 158 217 169 201 191 138 105 13..
              // but actually they are 1/4 the size e.g. int8
              l>-17!`v
              1b        // is compressed?
              100032j   // compressed bytes
              400000j   // original bytes
        • jazza68 2 days ago ago

          yeah, that is super neat! Very innovative to bring it to q.

  • jloveless 2 days ago ago

    benchmarks at https://github.com/l-labs unlike klong/ngn/bqn et al (which are GREAT) this has the goal of full production database compatibility (and full language compatibility).

  • carra a day ago ago

    Quite the cryptic tytle. Were they trying to save tokens?

  • AUnterrainer a day ago ago

    So many keyboard warriors with all the hate about a vibe coded website? If you judge a project based on its website, that tells everything about you.

    • Athanase000 a day ago ago

      There is so many low quality projects that rely on vibe coded websites and vibe written copy, that this becomes a smell, to the detriment of projects like OP's which is genuinely interesting and looks like high quality, well-crafted software.

    • UnfitFootprint a day ago ago

      Why would you not base your first impressions of a product on the way it chooses to describe itself? It’s not feasible to install everything you lay eyes on for evaluation, and reviews often assume you already assume the product is a good fit and want to evaluate quality/validity of that assumption

      • AUnterrainer a day ago ago

        Maybe because people focus on what's important rather than a fancy website? How many startups can't offer more than a fancy website. Warren Buffet, one of the greatest investors of all time has barely a website.

        • pillmillipedes a day ago ago

          have you seen the website for the latest version of k? "barely a website" doesn't even begin to describe it

          https://k.nyc

          • Hugsbox a day ago ago

            I think it's fantastic. Nice, simplistic, loads quickly, no ads, great letter.

            I don't necessarily like that it lacks a dark mode, but ultimately there's very little to complain about here. It accomplishes what many other websites only wish they could.

          • shaktidotie a day ago ago

            do you mean a website for something that isn't even released yet? Ever heard of a placeholder?

          • hoppp a day ago ago

            I love the effort

  • vessenes 2 days ago ago

    We'd like to see some benchmarks against open and closed k interpreters please! I'm curious how well a vibe coded k/q interpreter stands up to Shakti or whatever Mr. Whitney is letting out the door right now.

  • eismcc 2 days ago ago

    If this kind of thing interests you, you can try KlongPy (based on Klong) which also now has backprop support making it a differential array language.

    • jloveless 2 days ago ago

      KlongPy and KlongPy + duckDB are wonderful. GREAT job. I think there's a whole world of backprop / ML work that can be done in that style! Given the heritage not surprising that most Klong code is ~= L in k mode! Same with ngn/k . E.g. sigmoid is almost the same (:: for assign in klongpy , : for l/q/k). The autograd work is great!

  • mctwo a day ago ago

    These languages are very niche, isn't it? Unless you are interested in getting a job with specific companies, I don't see why you would learn them.

    • jloveless a day ago ago

      More niche than many yes - but there’s something about learning an array language that changes how you look at programming in general. And for the better. Of course, the places where these things are used are generally very well paying positions. They tend to be areas with a very high amount of data that is incredibly valuable.

  • Xirdus 2 days ago ago

    These single letter names are getting out of hand.

  • plastic041 2 days ago ago

    I thought too long to find out what a means in a new runtime.

    • jloveless 2 days ago ago

      Sorry about that. Basically you can now write and run code in the K/q/or qsql languages on your laptop for free. For a very long time (20 years+) this language has not been accessible to most - it’s almost exclusively used on Wall Street and has a very high price barrier to entry. Q programmers are still some of the most highly paid engineers consistently - as the workforce is small and the use cases are (generally) extremely lucrative. If you are a programmer wondering what comes next… q might be for you. Over the decades I’ve taught a few dozen people Q- and I’m happy to say they’ve gone on to have wonderful and stable careers in high paying jobs with deep stability. Mostly hedge funds and banks (and exchanges). It’s a wonderful and often times world changing language and now you can play with it yourself. It’s also very very fast. As a database it’s still insanely great for many usecases.

      • xelxebar a day ago ago

        Would love to talk. I sent an email to the maybe-address string in you profile, but it bounced.

  • bingemaker 2 days ago ago

    | Memory is relatively slower.

    Memory got faster, no?

  • chews 2 days ago ago

    if you k you k ;-) for the uninitiated, this looks like some wallstreet quant's new startup. Initially I thought it was the rebrand of shakti, Arthur Whites most recent rewrite of an array language. It's purpose built tooling for computing tick data for financial markets, but the best way I can describe it is codegolf for experienced programmers who don't want to give up the keyboard. these tools combine dataaccess and the ability to compute against that data with as few abstractions as possible.

  • bikeshaving 2 days ago ago

    As someone who does not know what k4, qSQL, or q are, reading through the landing page of this website was giving me mild schizophrenia. And then I tried to search for these things in the old way, and received incredibly dry technical sites that still don’t tell me what it is, and all these names are wildly SEO unfriendly. So I had Claude give me context and it’s apparently the database Wall Street uses for tick data. Sounds cool but, jeez.

    • ofalkaed 2 days ago ago

      K4 is the K programming language, Q is a language built on top of K. They are the practical over achieving members of the array family of programming languages.

    • vessenes 2 days ago ago

      Algol derivatives usually written by, commercialized, then sold by Arthur Whitney. Generally considered write-only :)

      • mpweiher 2 days ago ago

        Algol?

        Did you mean APL?

        • vessenes a day ago ago

          Yes, yes I did. As penance, I will post Whitney’s sudoku solver in k:

             x@&/x?/:/:(+;!9;/:x)
          • lioeters a day ago ago

            Why did I have to see this mysterious and intriguing code in the morning, now my brain won't rest until I learn what every symbol means and how it works. Thanks for sharing!

    • cassepipe 2 days ago ago

      I believe k and q are member of the "array programming"/APL family of languages who are exceptionally terse/information-dense

      https://en.wikipedia.org/wiki/Array_programming

      EDIT: Did someone downvoted this because it is wrong or is someone I am arguing with rage-downvoted this ?

    • zacharynewton 2 days ago ago

      ¯\_(ツ)_/¯ quants be minimal

  • pasquinelli 2 days ago ago

    l must be named 1 because I is taken

  • cute_boi 2 days ago ago

    The UI screams gpt 5.5 high lol.

  • refulgentis 2 days ago ago

    Flagged, lots of unexplained grandiose thinking like “k and q made the vector the unit of thought.” K and q are unexplained and unlinked and “unit vector of thought” is pseudoscientific language

    Extremely likely to be AI, though I’m not sure that matters for rules re: submissions

    • dintech 2 days ago ago

      > “unit vector of thought”

      The language and its ideas come from Ken Iverson's famous paper "Notation as a Tool of Thought". This is a common understanding for people in the APL, K/J/Q etc array language communities, who are likely this website and product's intended audience.

    • bradrn 2 days ago ago

      > lots of unexplained grandiose thinking like “ k and q made the vector the unit of thought.”

      That much makes sense in context: K is an array language, like APL, J, etc. From what little experience I have with J, ‘vector as a unit of thought’ seems like a reasonable description.

      > Extremely likely to be AI

      I had the same thought though.

      • refulgentis 2 days ago ago

        That’s fair: The most fair-to-submitter reading of your comment is my concerns are unfounded. If you didn’t intend that, that’s fine.

        For moderators, I’d suggest that for the community, it’s spam. That’s one example, there are many more like it. The individual statement may be defensible but is still pseudoscientific language. This sort of content is a massive burden to community. Unanswerable anrguments about AI writing, whether the ability for an individual to have a parse-able reading is the same as writing being parable. The net effect is negative experiences for many and copy-editing for someone who did not do copy editing.

        • skruger 2 days ago ago

          The 'unit of thought' thing is a nod to the Ken Iverson paper on APL that won him the Turing Award ("Notation as a Tool of Thought"), also referenced by Dyalog's tag line "The tool of thought for software solutions"). Variations of that phrase are endemic in the array languages space.

    • beng-nl 2 days ago ago

      I see how jarring it is for you, but I want to comment-vouch against your flag. If you slow down a little, you can spot some meaning there. Its oddly phrased, but it does make sense that vectors (as in: simd vectors) are the building blocks of execution (to put it closer to how I might say it).

      I’ve had similar ideas in the past: clearly simd is the way to get the most out of your cpu. Can we design a language where all operations are automatically simd, and it takes effort to do anything in scalars?

      And I guess these array languages are what you might get.

      It’s not ‘unit vector of thought,’ btw, which is weirder than what it says.

    • ofalkaed 2 days ago ago

      >If a story is spam or off-topic, flag it. Don't feed egregious comments by replying; flag them instead. If you flag, please don't also comment that you did.

      https://news.ycombinator.com/newsguidelines.html

      • refulgentis 2 days ago ago

        Thank you! I'm always finding new rules, even 16 years in :) Much appreciated when it's pointed out.

    • hasteg 2 days ago ago

      I mean, this is perhaps the most vibecoded website possible so... deff AI.

      • refulgentis 2 days ago ago

        It attracts negative energy via unanswerable questions and downvotes if you assert it is, alas.

  • nilirl a day ago ago

    Am I the only one not getting the hate for the website? The site looks fine to me. What about it is bad?

    • Athanase000 a day ago ago

      Have you used Claude Design? The site has all the hallmarks of it.