Recent submissions

Comment · 2 hours ago
> Sure, the same can be said of an async library

An generic future is much harder to be called like this. You need to to create wakers and if you don't properly handle them you'll busy loop. You also need to provide the exact runtime the future needs for its I/O.

> so long as you're okay with none of your other flows being able to make progress in the meantime

And isn't that what blocking code does all the time?

> ‘The best of both worlds’ means that it shares the advantages of both

If you look at it from the perspective of a caller:

- you can easily use it from blocking code without needing a runtime - you can easily use it from async code without blocking the executor

As such it does provide the best of both worlds to the caller.

It is true that it's the worst of both worlds for who is writing the Sans-IO library though.

> or, as we used to call it, pure functional programming

You can for sure describe this as "pure" and "functional", but I bet most people think of a different paradigm when talking about pure functional programming.

Comment · 9 hours ago
Nit: the relevant feature is now called `Coroutine`, not `Generator`
Comment · 9 hours ago
> flow that crosses several state transitions (and may have other disjoint parts of the state updated in the meantime, via other transitions) now has to be rewritten as a (series of) state transitions, and can't be called from a blocking function

This is incorrect. You can easily call that flow from a blocking function, just call it in a loop.

What normally prevents a blocking function from "simply" calling an async one is that the async function needs runtime support for certain operations: the simpliest of which is suspending until it's notified, with more complex ones being async I/O primitives.

A Sans-IO library needs none of these. It can simply be called in a loop and as long as the caller provides more inputs it will make progress. An blocking caller can simply call the std's `Read::read` and pass the received bytes in, while an async caller can use async I/O primitives to do the same, and since the Sans-IO library yields once it finishes consuming the current input it won't block the async library either.

It's the best of both world but as always you have a tradeoff, and in this case it's the ability to express the state machine as if it was a straightforward function. Maybe once Rust gets support for generic coroutines this will get better.

Comment · 1 day ago
> Someone was driving the train who couldn't estimate the stopping distance relative to speed.

The stopping distance for a train this size and this fast is around 2km. Good luck estimating that by sight. There is a reason the normal protocol has a 40km/h max speed for traveling according to line of sight, which the driver was told wasn't needed.

Comment · 1 day ago
Lol devastation. Google Search is up 12% YoY, but since Google Cloud is up 102% YoY it took more percentage of the total revenue. Yeah this definitely look devastation.
Comment · 2 days ago
Bold of you to assume it will still be called Gemini
Comment · 3 days ago
That's a very good way to ensure your software is not reproducible.

People don't trust other people making little changes to existing software, who will ever be ok with rebuilding it from scratch?

Comment · 4 days ago
Not sure about how "natural" Omega(2^(n/sqrt(log(n))) is, but a huge intermediate result would be proving that QP = NP or QP != NP.
Comment · 4 days ago
The algorithm is still exponential, it just not in the class that the ETH claims. In practice it's likely worse than current algorithms for any reasonable input you might throw at it, and starts getting faster only once the problem is already too big.
Comment · 4 days ago
> Q126 revenue $4.7 billion -> Q26 revenue $11.5 billion (+145%)

I suspect this started stagnating in Q3/Q4, which is why they're looking to IPO now.

Comment · 4 days ago
> but JP Morgan and Eli Lilly are not going to go spend $500M on chinese AI tokens routed through OpenCode

And they likely won't be spending them on something without ZDR like Fable 5.

Comment · 5 days ago
For enterprise customers the value proposition of self-hosting one of the open models is enormous. We're talking 10x cheaper (remember that enterprises pay API rates), plus more control on where the data goes (especially given that some frontier models do not support ZDR). And all those savings are lost revenue for the US AI Labs.
Comment · 5 days ago
Then you would say it's quite performant/efficient when comparing to other models of similar price, but reasonably priced.
Comment · 5 days ago
Because supposedly Adobe would have paid a lot more for AI and tokens than a couple of random people working on Artcraft.
Comment · 5 days ago
> No, someone still has to pay the subscription. AI Labs don't care who uses the tokens and how.

Some dev or company might pay for a subscription (or self-host an open weight model) for maintaining that Photoshop clone, but the millions of people that were paying for Photoshop could simply stop paying and use the free/cheap alternative.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton