Hacker Newsnew | past | comments | ask | show | jobs | submit | SmileyKeith's commentslogin

Can you add some examples of the things users care about that aren't well covered by this? I empathize with everyone who wants a feature comparison chart so they can be confident switching without unknowingly losing important safety checks.


The conformance test suite is currently mostly focused on “what does an explicit type annotation mean”

A shared spec for this is important because if you write a Python library, you don’t want to have to write a different set of types for each Python type checker

Here are some things the spec has nothing to say about:

Inference

You don’t want to annotate every expression in your program. Type checkers have a lot of leeway here and this makes a huge difference to what it feels like to use a type checker.

For instance, mypy will complain about the following, but pyright will not (because it infers the types of unannotated collections as having Any):

  x = []
  x.append(1)
  x[0] + "oops"
The spec has nothing to say about this.

Diagnostics

The spec has very little to say about what a type checker should do with all the information it has. Should it complain about unreachable code? Should it complain if you did `if foo` instead of `if foo()` because it’s always true? The line between type checker and linter is murky. Decisions here have nothing to do with “what does this annotation mean”, so are mostly out of scope from the spec.

Configuration

This makes a huge difference when adapting huge codebases to different levels of type checking. Also the defaults really matter, which can be tricky when Python type checkers serve so many different audiences.

Other things the spec doesn’t say anything about: error messages quality, editor integration, speed, long tail of UX issues, implementation of new type system features, plugins, type system extensions or special casing

And then of course there are things we would like to spec but haven’t yet!


> but pyright will not (because it infers the types of unannotated collections as having Any)

This is incorrect. pyright will infer the type of x as list[Unknown].


Unknown has the exact same type system semantics as Any.

Unknown is a pyright specific term for inferred Any that is used as the basis for enabling additional diagnostics prohibiting gradual typing.

Notably, this is quite different from TypeScript’s unknown, which is type safe.


This was confusing me, thanks.

In case you’re not well versed in Python typecheckers, in the mypy vs Pyright example, Pyright can be configured to complain about not annotating the collection (and so both typecheckers will yell at the code as written).

TypeScript takes the same approach in this scenario, and I assume this helps both be fast.


They were "on the Python Typing Council and helped put together the spec, the conformance test suite, etc" so I assume they are an expert on Python typecheckers

I didn’t write it for parent lol. I guess I should be more careful with “you”.

TypeScript will use flow typing to determine the type as number[] in this code:

    const x = []
    x.push(1)
    type t = typeof x // number[]

I think the idea is not that there are features that aren’t listed, but rather that if a typechecker supports 10 features people care about and is missing 10 that people don’t really use, it will look a lot worse on a list like this than a typechecker with 100% compliance, when in practice it may not really be worse at all.

Edit: Based on this other comment, the point was also about things not covered by the spec. “The spec mostly concerns itself with the semantics of annotations, not diagnostics or inference.” https://news.ycombinator.com/item?id=46296360


The chart does not describe speed (either in general or in any particular case). Speed/performance/latency is a thing users care about that is not included in the feature list.


Yea that one is fine and well covered in the blog post, and pretty easy to spot in light testing. I'm much more worried about the ones that are harder to spot until you have a false negative that turns into a real bug which would be caught by 1 tool and not another.


I can't recall a single time that type-checker speed was the limiting factor for me.

I can't say I've been bottlenecked on it, but I've certainly been bothered by it.


That has been there for a while so I think it's still an open question of if this change of strategy applies to that repo too


Looks like someone filed an issue about this https://github.com/bluewhalesystems/sold/issues/35


This isn't the primary part of this conversation but I found this quote pretty interesting:

> Now, we are starting to work on Safari again but look at Chrome. They put out releases at least every month while we basically do it once a year.

Even though this was in 2013 nothing about the release cycle (still only major changes with the major OS release versions). I wonder if some of the other emails have more context on this.


I think the truth is the vast majority of people don't care much about their browser anymore. They are pretty much all good enough.

There is only one reason why chrome got so much market share: because they put an ad on the Google homepage "Try a faster browser!". The marketing was bullshit (bloated websites don't load any faster in Chrome than in other browsers), but it worked.

If any other company advertised their browser so heavily, they would be the leading browser maker today. But noone else can put ads on every load of the Google homepage.


> I think the truth is the vast majority of people don't care much about their browser anymore. They are pretty much all good enough.

I think browsers are just so complex that most people don't understand that there's something wrong with their browser or operating system and just blames the website. Few years back it feels that everybody knew that if something is a bit off on the web they should try a different browser. Now, this idea seems to be more or less gone - most people only have 1 browser installed to begin with.


Safari is the Chrome around webkit on the platform, so it tends to reflect platform major version number changes. Chrome is its own platform and does not have semantic version numbers AFAIK (or, they just break compatibility once a month)

Non-APNS push notifications landed on macOS in 16.1. They get webkit features in minor releases. Mouse and keyboard support for iPad also landed in a minor release. They average about 6 releases a year.


I thought they released Safari for Windows to enable developers to test their web based iPhone apps. Before the App store all iPhones were supposed to only run web based apps, and Windows was a much larger platform for developers.


Well this is obviously not true. Apple releases point upgrades to iOS along with Safari changes throughout the year.


"Basically" means "not literally but for all practical purposes might as well be" but in fewer words. Safari's major features, for all practical purposes, are released annually and not with point upgrades unless they were planned features (same with iOS, iPadOS, and macOS) that didn't make it into .0.


So Google releases features without planning?


> So Google releases features without planning?

Or they release them at a faster cadence, which was the point of the quoted portion of the emails. That doesn't mean no planning.

EDIT: Actually, I reread your comment and have no idea what you're getting at. Why do you think I'm suggesting Google has no planning?


I’m not. I’m suggesting that it is no different what Apple does and what Google does.


It is different though, at least to the consumer.

Among my iPhone-owning friends, it is common to hear “they didn’t add X to Safari in iOS 16 but I hope they will in iOS 17” or “did you watch the iOS 16 promos? They’re adding X to Safari.” It is expected that major Safari features coincide with major iOS releases.


So what features are your friends chomping at the bit to be added to safari that they look longingly at their Android owning friends fodder?


I’m not comparing the features of iOS Safari and Chrome on Android. I’m just saying they approach the release schedule differently, like the exec said in the email.


I've had similar problems contributing to bazel (Google's open source build tool) for the past few years. I've found contributing only goes smoothly if there is a single Googler working in your area who cares about open source. Otherwise everything is very Google centric and the open source community is definitely a secondary concern (which is of course their right!)


FYI your website's CSS on mobile causes unexpected horizontal scrolling issues


Daily. I find it a great way to follow many low frequency blogs without having to fill my twitter feed or email with them.


> Github seems to be primarily focused on becoming a social network

I never hit the GitHub.com homepage so I never see any of this work. I always start directly on a repo, notifications, or search.


> Even the slack requires an @google.com email to get in.

This shouldn't be the case, I'm in this slack and it's mostly non-google folks. Do you see this at https://slack.bazel.build ?


I did that page was a log in or sign up page, which required an @google.com email to sign up: someone has fixed it now, it wasn’t working on Friday which was the last time I checked.


For bazel users there is also this project[0] which runs the tools natively on Linux without requiring this layer. Although you lose tools like ibtool / actool which don't have open source re-implementations.

[0]: https://github.com/apple-cross-toolchain/rules_applecross


How do they obtains the mac/ios/... SDKs? I thought they were packed with Xcode, and it wasn't permissible to extract them?


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: