Only tested on Linux for now, though Zed's support for other platforms should be (mostly?) intact.
86 karma · joined January 21, 2013
Only tested on Linux for now, though Zed's support for other platforms should be (mostly?) intact.
We are now in the process of implementing TypeScript-like inference (not full type checking!) that allows us to enable type-informed lint rules. This is similar to typescript-eslint except instead of using tsc we attempt to implement the inference ourselves.
This post describes our progress thus far, with a detailed overview of our type architecture.
With this partnership, we aim to develop TypeScript-compatible type inference that works out of the box for use in our lint rules.
Biome is an integrated linter and formatter with support for JavaScript, TypeScript, CSS, and more.
Highlights of the release:
* Plugins: You can write custom lint rules using GritQL.
* Domains: Domains help to group lint rules by technology, framework, or well, domain. Thanks to domains, your default set of recommended lint rules will only include those that are relevant to your project.
* Multi-file analysis: Lint rules can now apply analysis based on information from other files, enabling rules such as noImportCycles.
* `noFloatingPromises`: Still a proof-of-concept, but our first type-aware lint rule is making an appearance.
* Our Import Organizer has seen a major revamp.
* Assists: Biome Assist can provide actions without diagnostics, such as sorting object keys.
* Improved suppressions: Suppress a rule in an entire file using // biome-ignore-all, or suppress a range using // biome-ignore-start and // biome-ignore-end.
* HTML formatter: Still in preview, this is the first time we ship an HTML formatter.
* Many, many, fixes, new lint rules, and other improvements.
As for Heraclitus vs. Plato, I think the lesson I’m trying to teach is to not pick a side until you understand each position’s implications and which of those might be more beneficial to the problem at hand ;)
In all seriousness though, you do hit a great point. The moment you stop being embarrassed about your mistakes and set your ego aside, is the moment that you can truly start learning from those same mistakes. At some point it even becomes the only way you can move forward, unless you want to stay boxed inside a niche of expertise defined by your own self-set boundaries.
Indeed if you pass by value/use immutability where feasible, you already avoid most of the issues I’m warning against, so it sounds like you found a sensible way to apply it while avoiding the pitfalls.
> If I have to give a taxi driver a jerrycan full of petrol, that's the definition of a leaky abstraction... Possibly literally in this case.
:D
Here is an example comparing C# with F#, where the latter also algebraic data types: https://blog.ploeh.dk/2016/11/28/easy-domain-modelling-with-...
Congrats to the team, and wishing the project a healthy future!
I would be sympathetic if it were purely `”Hello, World!” |> console.log`. I still wouldn’t use a pipe in such a trivial case, but at least it’s not really worse. But with the topic selector that example has strictly more concepts you need to understand than the example without pipe. From an educational perspective that’s already not great, but what’s more worrisome is that proponents tend to suggest the pipeline should be used wherever you can, despite simultaneously “knowing” when not to use it and ignoring examples where you cannot use it due to multiple subjects being composed.
It’s not the pipeline in general that I’m against, but I’m very opposed to this “let’s-add-a-third-syntax-to-compose-arbitrary-expressions-Hack” proposal.
Proponents argue it’s great because you can pipe arbitrary expressions without nesting or needing temporary variables, but opponents argue it harms readability and will result in needless style arguments.