frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

How Container Filesystem Works: Building a Docker-Like Container from Scratch

https://labs.iximiuz.com/tutorials/container-filesystem-from-scratch
1•thunderbong•2m ago•0 comments

Show HN: Spring Boot and OpenAPI Generator – type-safe clients with generics

https://github.com/bsayli/spring-boot-openapi-generics-clients
1•barissayli•2m ago•0 comments

We've attacked 40+ AI tools, including ChatGPT, Claude and Perplexity

https://github.com/lidangzzz/AIGuardPDF
1•lidangzzz•2m ago•1 comments

Understanding the Success of the Know-Nothing Party

https://hwpi.harvard.edu/files/econ/files/knownothings.pdf?m=1617291525
1•bryanrasmussen•12m ago•0 comments

Moonbit developers are lying to you

https://bitemyapp.com/blog/moonbit-developers-are-lying-to-you/
3•todsacerdoti•16m ago•0 comments

When Technical Products Outgrow Non-Technical Leadership

https://guptadeepak.com/when-great-products-become-a-curse-the-non-technical-leadership-paradox/
1•guptadeepak•16m ago•1 comments

Arturo Programming Language Playground

https://arturo-lang.io/playground/
1•TheWiggles•17m ago•0 comments

Whirlpool Tells U.S. Authorities Its Rivals Could Be Evading Tariffs

https://www.wsj.com/business/whirlpool-tells-u-s-authorities-its-rivals-could-be-evading-tariffs-...
2•petethomas•18m ago•1 comments

Wake-Up Call for EV Industry: Compliance Protocol Ignores Peak Magnetic Pulses

https://microwavenews.com/news-center/wakeup-call-ev-industry
1•transpute•19m ago•0 comments

Smalltalk and Lambda Calculus

https://blog.ielliott.io/smalltalk-and-lambda-calculus
3•Bogdanp•23m ago•0 comments

"Hello, Is This Anna?": Unpacking the Lifecycle of Pig-Butchering Scams

https://arxiv.org/abs/2503.20821
3•stmw•26m ago•0 comments

Apple breaks records in China with high iPhone 17 preorders

https://appleinsider.com/articles/25/09/13/apple-breaks-records-in-china-with-high-iphone-17-preo...
1•alwillis•27m ago•1 comments

Penske Media Corporation v. Google, LLC (D.D.C.) 1:25-cv-03192 [pdf]

https://ia801005.us.archive.org/8/items/gov.uscourts.dcd.284823/gov.uscourts.dcd.284823.1.0.pdf
1•1vuio0pswjnm7•27m ago•0 comments

Language Models Pack Billions of Concepts into 12,000 Dimensions

https://nickyoder.com/johnson-lindenstrauss/
2•lawrenceyan•30m ago•0 comments

Why Neeto Doesn't Do Traditional Marketing or Use AI to Deflect Tickets

https://neerajsingh0101.neetopublish.com/p/why-neeto-doesn-t-do-traditional-marketing-or-use-ai-t...
1•neerajdotname2•30m ago•0 comments

Xrust – XPath, XQuery, and XSLT for Rust

https://gitlab.gnome.org/World/Rust/markup-rs/xrust
1•zdw•34m ago•0 comments

AmneziaWG: Fork of WireGuard-Go eliminating DPI identifiable network signatures

https://docs.amnezia.org/documentation/amnezia-wg/
1•zdw•39m ago•0 comments

Free software for virtual reality studios

https://apps.microsoft.com/detail/9nldf2lrgjjg?hl=en-US&gl=US
1•zhanghaiguo•47m ago•0 comments

China's economy slowdown deepens in August: retail sales, industrial output miss

https://www.cnbc.com/2025/09/15/china-retail-sales-industrial-output-slow-in-august-missing-estim...
3•rntn•53m ago•1 comments

Why Is Taiwan the Poorest Among Developed Countries?

https://twitter.com/jukanlosreve/status/1967088441092677775
3•ipnon•55m ago•1 comments

Decentralized YouTube alternative adds livestream scheduling in new release

https://news.itsfoss.com/peertube-7-3/
10•MilnerRoute•57m ago•1 comments

From Sears to Surveillance

https://cardog.app/blog/sears-to-surveillance
1•samsullivan•57m ago•0 comments

Imagine putting DRM in a battery to void warranties [video]

https://www.youtube.com/watch?v=yoVd1PAlT-Q
3•givemeethekeys•58m ago•1 comments

Revocation Ain't No Thing

https://dadrian.io/blog/posts/revocation-aint-no-thang/
2•tptacek•59m ago•0 comments

Self-Assembly Gets Automated in Reverse of 'Game of Life'

https://www.quantamagazine.org/self-assembly-gets-automated-in-reverse-of-game-of-life-20250910/
1•romanzubenko•1h ago•1 comments

Not all browsers perform revocation checking

https://revoked-isrgrootx1.letsencrypt.org/
30•sugarpimpdorsey•1h ago•14 comments

Compile a timeline of your water quality results

https://hydroanalyze.tech/
1•harishiitkgp7•1h ago•1 comments

996: The truth about working hours, then and now

https://medium.com/@cjc/working-hours-then-and-now-09d2469b8895
1•cristinacordova•1h ago•0 comments

Which NPM package has the largest version number?

https://adamhl.dev/blog/largest-number-in-npm-package/
17•genshii•1h ago•1 comments

How I became a machine learning practitioner (2019)

https://blog.gregbrockman.com/how-i-became-a-machine-learning-practitioner
1•cyanf•1h ago•0 comments
Open in hackernews

Pyrefly - A faster Python type checker written in Rust

https://pyrefly.org/
142•muglug•4mo ago

Comments

koakuma-chan•4mo ago
> pyrefly check --suppress-errors

> INFO 5,240 errors shown, 65,932 errors ignored

Not a single Python type checker had ever worked for me so far.

kstrauser•4mo ago
I don't see the link between that output and your conclusion. Are those results wrong?
koakuma-chan•4mo ago
> Are those results wrong?

I don't know. Some packages just don't work with type checkers, e.g. Django.

masklinn•4mo ago
Django has a community stubs project, are you using it?
etimberg•4mo ago
the stubs can only do so much. There's so much magic and inferred properties that a type checker will never be able to fill in alone
aitchnyu•4mo ago
Does django-stubs work with other type checkers than Pyright?
masklinn•4mo ago
Stubs are a standard python feature (PEP 561) so I'd expect them to work with any type checker which supports stubs, which should be all of them (as much of the ecosystem is typed via stubs).
johnisgood•4mo ago
Is it not that he used the "--suppress-errors" flag yet it did not ignore the errors?
kstrauser•4mo ago
It's hard to tell. Other similar options in other commands can mean things like "exit with status 0 even if errors are detected". Without installing pyrefly, I'm not sure what that flag's supposed to do. It's not documented on their site.
koakuma-chan•4mo ago
It adds a comment to suppress the error above each line in your codebase that causes an error, but it reports the errors before doing that, so you can only see the result after you re-run `pyrefly check`.
kstrauser•4mo ago
Oh! That's nifty. It leaves you with a baseline so you can stop making new mistakes, and gives you something to grep for when you want to fix existing ones.
ipsum2•4mo ago
It's literally working? What did you expect?
koakuma-chan•4mo ago
Maybe it's working but it's not useful.
masklinn•4mo ago
What would you expect "useful" to be if your codebase is basically incompatible with type checking?
koakuma-chan•4mo ago
I expected that I would be able to run the check command and it would just work. Upon reading the docs, this tool recommends incremental adoption, and after using `--suppress-errors`, `# pyrefly: ignore` is all over my codebase.
Yossarrian22•4mo ago
…how else would it work?
nerdponx•4mo ago
That's incremental adoption for adding type hints, not for adopting this particular tool in an already-type-hinted codebase.
krick•4mo ago
I know I shouldn't get into this thread, but I'm extremely curious: what did you expect should have happened? I mean, literally, what do you mean by "just work", what work did you expect a type checker to perform if not to show you errors?
koakuma-chan•4mo ago
I expected a reasonable amount of reasonable errors, not 60k+ errors most of which are import-error, even though the code runs fine.

edit: most errors weren't actually import-error, I just misunderstood --search-path

fastasucan•4mo ago
Its the fault of the tool that the codebase had lots of errors?
koakuma-chan•4mo ago
I would say it's the fault of the ecosystem. Hopefully it will get better as libraries adopt type hints.
fastasucan•4mo ago
What does "just work" mean? You are comically obtuse.
ForHackernews•4mo ago
Fix your types.
IshKebab•4mo ago
Do you... have type annotations? I think you might be missing the point.
jon-wood•4mo ago
I think the point here is that for something like Python the default behaviour should be an assumed return type of `Any` rather than throwing an error. Maybe that is the case and the GP had configured it otherwise.
IshKebab•4mo ago
No it shouldn't because then you can easily miss places where you should have added a type annotation, and also your lazy colleagues won't bother adding them at all.
darthrupert•4mo ago
The worst of both worlds is colleagues who insert type annotations but they're wrong. And there's no CI pipe to verify the types before check-in.

Working with these things makes me often think that people who want to write high quality software should just use a better language. But, well, real world is real.

koakuma-chan•4mo ago
> just use a better language

This

IshKebab•4mo ago
Yeah unfortunately Python is crazy popular so a lot of the time you don't get a choice.

If fairness if you set up uv and Ruff and Pyright it's kind of ok. Still have to deal with the general noobness of the ecosystem and the horrific performance, but I've seen worse.

team_pyrefly•4mo ago
Thanks for giving this a try! We go over how to use the upgrade tooling (`--suppress-errors`) in the guide here: https://pyrefly.org/en/docs/installation/. This is intended to make upgrading from different versions of type checkers easier. It’s something we use internally and wanted to share with the community along with the checker itself.

We also allow you the ability to suppress whole classes of errors if you want to ignore specific error types and avoid inline ignores: https://pyrefly.org/en/docs/configuration/ A word of caution: this will ignore future errors of this type as well.

First, make sure your project is properly configured and then follow the instructions. `--suppress-errors` will add ignores inline allowing the project to check cleanly. We have thought about a feature that allows you to keep suppressions in a separate file, but we have not put it on the roadmap yet. If this is something important for your workflow, we would like to learn more - please add a feature request on GitHub.

darthrupert•4mo ago
Don't blame the tool for your shoddy work. Either accept your mediocre quality or do something to fix it.
femtozer•4mo ago
The team behind ruff/uv is working on a similar tool:

https://x.com/charliermarsh/status/1884651482009477368

joshdavham•4mo ago
Have there been any updates on when they think it’ll be released?
singhrac•4mo ago
At least the alpha milestone is May 12, but I don't think they've publically committed to anything.

In particular for me it would be great to have a better typechecker than Pyright available for Zed (basically why the editor is a nonstarter right now).

Y_Y•4mo ago
An editor is a nonstarter because it doesn't doesn't integrate the right implementation of some particular optional feature for some particular language?

That's a high bar!

drcongo•4mo ago
I have some sympathies with the parent post as Zed is my daily driver and I mostly write Python. Pyright is horrible to work with, tons of false positives. Parent poster - you might find this useful: https://github.com/zed-industries/zed/discussions/24801
hopfenspergerj•4mo ago
No it is not horrible to work with. Even the “standard” settings are quite lax.
drcongo•4mo ago
I think our respective comment votes disagree.
singhrac•4mo ago
Well, I mean why use a suboptimal tool? I don’t have any ideology to follow, my codebase is just mostly Python and heavily typed. Pyright doesn’t support all the features so I stick with VSCode/Pylance.
WD-42•4mo ago
So what editor is a starter then? As far as I know pyright is the de facto checker for python in most editors. Not sure why it would be worse in zed, seems to work fine for me. Or as well as pyright can work.
emptysea•4mo ago
A rewrite of https://github.com/facebook/pyre-check in rust?
codethief•4mo ago
My thought exactly! Maybe for performance reasons? (Though I wouldn't expect OCaml to perform that badly, either…)
team_pyrefly•4mo ago
Yes, this is a ground up rewrite: https://pyrefly.org/en/docs/pyrefly-faq/#what-is-the-relatio...
nine_k•4mo ago
On one hand, "launching Spring 2025". On the other hand, 47% complete, with a ton of basic stuff not yet ready. I wonder how fast they plan to move, given that only 32 days remain of the spring.
Vinz_•4mo ago
We’re 53 days away from summer though.
rplnt•4mo ago
Not in southern hemisphere.
croemer•4mo ago
It's not "47% complete", it's just that (now) 52% of the issues in a milestone are complete.
alexmolas•4mo ago
The astral team (behind uv and ruff) is already working on a type checker in Rust, and given the quality of their existing tools, I'm inclined to wait and see what they release. Pyrefly looks interesting, but from the repo it seems pretty early-stage and not intended for external use yet.
maxloh•4mo ago
It is codenamed "Red Knot".

Refer to the crates starting with red_knot in this directory to follow its development: https://github.com/astral-sh/ruff/tree/main/crates

The latest commit was only an hour ago.

nemith•4mo ago
Also Facebook has a history of releasing the source code for something. Making a huge splash and then essentially doing nothing after 3 months (aka after someone gets their review).

They use the code internally but fail at making sure it has use externally. This is doubly the case for anything infrastructure

Buck2: Was released. Never could be built correctly without the latest nightly of Rust and even then it was fragile outside of Meta's build architecture

Sapling: Has a whole bunch of excitement and backing when it was announced. Has been essentially dead 3 mos after release.

I used to work for Meta infra. I know the MO. Have a hard time trusting.

Astral use-case is external and has a better chance of actually being supported.

wocram•4mo ago
Is this standard promotion driven development? Or do the people who are trying to open source these products end up being blocked?
nemith•4mo ago
When I was there (which was a while ago) almost every decision was based around PSC (Performance Summary Cycle) and it's easy to justify a good rating for a large project being open sourced. Less so to make sure it's well supported for the use cases of the community.
ipsum2•4mo ago
Sapling is actively developed, not "dead after 3 months": https://github.com/facebook/sapling/commits/main/

Have not tried building Buck2 (no personal use for it), but its also actively developed: https://github.com/facebook/buck2/commits/main/

nemith•4mo ago
Sorry I didn't mean it's not dead but it really hasn't got as much feature support. Things like LFS support got deproritized just because the internal team asking for it got a different feature.

Both are EXTREMELY active but only for the needs of Meta and not for the community.

Adoption outside of Meta is nearly non-existent because of this.

Look at something like Jujitsu. instead of Sapling and you can see a lot more community support, a lot more focus on features that are needed for everyone (still no LFS support, but it wasn't because Google didn't need it).

I guess I don't consider a larger number of commits as actively supporting the community. The community use is second place and the open source is just a one time boost to recruiting PR.

team_pyrefly•4mo ago
We totally get why you might be skeptical and even address this in our FAQ: https://pyrefly.org/en/docs/pyrefly-faq/#how-do-i-know-this-...

We know we can't just ask for trust upfront. Instead, we want to earn it by showing up consistently and following through on our commitments. So, take us for a spin and see how we do over time. We're excited to prove ourselves!

jihadjihad•4mo ago
At first I thought this was the release from Astral for their type checker. Same boat, sitting tight, holding champagne ready for that day too.
lame-lexem•4mo ago
astral team has live web demo they use internally of redknot on https://playknot.ruff.rs
WD-42•4mo ago
Cannot wait to get rid of pyright, but I’ll be holding out for Astrals type checker.
nikisweeting•4mo ago
I've loved pyright so far, what do you dislike about it?
ndr•4mo ago
It's slow as hell. And every version bump comes with a bunch of new warnings/errors by default that is quite disruptive if you want to keep it quiet. But mostly that it is annoyingly slow.
emptysea•4mo ago
Might be worth checking out https://github.com/DetachHead/basedpyright

But I’ve had the same issue with too many warnings, mypy is better at understanding Python but even slower.

addoo•4mo ago
I guess it’s all relative. One of my code bases still has pylint running with only a couple custom lint rules, that one is slow as hell.

As for version bumping, maybe it’s just a me thing, but I hard fix a version and only update occasionally. Sure each update brings new warnings, but most of them are valid and if you only do it a couple times a year… not that big a deal.

WD-42•4mo ago
Try ruff instead of pylint. It will open your eyes to how performant software can actually be. All of us that have been working in python and JavaScript for too long have really forgotten.
addoo•4mo ago
We use ruff for everything that isn’t a custom rule.

The only thing I found it ‘missing’ was an indentation check (it’s in preview, I don’t turn on preview rules), but I realized it doesn’t matter because we also have a formatter running on everything.

WD-42•4mo ago
It’s dog slow. I realize we are talking about a python checker written in typescript, so two relatively slow languages combined, but still.

The dependency on node makes it a PITA to set up in non-vs code environments as well.

insane_dreamer•4mo ago
pyright doesn't do well with inspecting inherited types, at least in our experience. Falls far behind JetBrain's type checker in Pycharm. (This is one reason why pycharm >> zed.)
olejorgenb•4mo ago
Are you kidding? Pycharm's pychecker is very incomplete. My whole team moved away from pychram due to the shitty typehint support which barely moved forward. (5+ year old bug, inconsistent behavior across the different features in pycharm indicating to me a fragile mess of heuristics behind the curtains)

I agree that most of the functionality on top of the type checker/engine is better in pycharm though. But a correct implementation is more important

JimDabell•4mo ago
It has warnings that steer you away from idiomatic Python towards less idiomatic Python.

Idiomatic Python favours EAFP (Easier to Ask Forgiveness than Permission) over LBYL (Look Before You Leap), so you might write something like this when using TypedDicts:

    try:
        foo = bar["baz"]["qux"]
        ...
    except KeyError:
        ...
Pyright warns you about this and pushes you to write this:

    if "baz" in bar and "qux" in bar["baz"]:
        foo = bar["baz"]["qux"]
        ...
    else:
        ...
They identified this as a bug and fixed it, then changed course and decided to reinstate the behaviour. So if you want to write idiomatic Python, you need to disable typechecking TypedDicts.

— https://github.com/microsoft/pyright/issues/1739

Now if this were a linter then I would understand. But a type checker should not be opinionated to the point of pushing people not to use idiomatic Python.

NeutralForest•4mo ago
For maximum safety, I would write:

    if bar.get("baz", {}).get("qux") is not None:
    ...
nikisweeting•4mo ago
any more than 2 levels deep of this pattern and I reach for python-benedict
NeutralForest•4mo ago
Nice, I didn't know about that lib! Usually if I have very nested content I recursively parse it and I'll have some business logic in the function to handle cases here and there. Or I'll have a validation library like Pydantic.
copperroof•4mo ago
When I last compared it to mypy a few months ago adding typechecking to an old project that had types but I had for some reason never actually run a typechecker on it:

* Was overwhelmingly slower than mypy

* Had a few hundred more false positives. I gather from reading their philosophy afterward that this was on purpose. Rigid dogma > doing the right thing in the circumstance in their opinion.

* Did not find any actual bugs, whereas mypy identified 3 errors that lead to fixing real issues AND had fewer false positives, due to its better understanding of python code.

* Comically overweight with its typescript dependency.

My first impression of it was of a very low quality, over engineered project prioritizing noise over signal. Looking forward to trying out the astral typechecker as well.

team_pyrefly•4mo ago
Hi Hackernews, I’m on the team working on Pyrefly at Meta. We address a lot of the comments in our FAQ: https://pyrefly.org/en/docs/pyrefly-faq/. I will try to address some questions directly too!

Pyrefly is a work in progress, but you can install it from pypi and/or try our alpha VSCode extension if you are interested. You may still get false positive errors on your project as we are still burning down bugs and some features. We would love comments, bugs, or requests on our GitHub as you try it out.

Lastly, one of our team members is giving a talk at PyCon about the design if folks are interested: https://us.pycon.org/2025/schedule/presentation/118/. We didn’t expect much attention before then, so thanks for taking a look!

odie5533•4mo ago
This is awesome! Thank you for sharing it!

I'm wondering though, why do existing tools like Mypy and Pyright not scale for Meta? Is Pyre(fly) being used extensively at Meta? In general what sort of issues did Meta run into?

team_pyrefly•4mo ago
We go into it a bit more here: https://pyrefly.org/en/docs/pyrefly-faq/ The short answer is that the scale of the Python projects we work on is huge. Pyre is the only checker that can scale for our needs today. To bring modern features like type inference and better IDE integration, a full rewrite needed to happen. We are not done just yet, but have been using our massive codebases to test the performance and flexibility of the checker. Thanks for the question!