HN user

conaclos

1,178 karma

@biomejs founder & lead maintainer - @Inria R&D engineer - PhD in Computer Science

TypeScript & Rust programmer. Researcher in distributed systems, CRDT, embedded systems.

Github: @Conaclos Bluesky: @Conaclos Biome: https://github.com/biomejs/biome GPG: http://pgp.mit.edu/pks/lookup?search=victorien+elvinger

Posts21
Comments304
View on HN
pontus.granstrom.me 1y ago

Making the cooking recipes easier to follow

conaclos
3pts0
paxo.fr 1y ago

Paxo: A DIY Phone

conaclos
138pts36
biomejs.dev 1y ago

Biome v1.9 CSS and GraphQL support

conaclos
9pts0
biomejs.dev 2y ago

Biome 1.7: Migrate from ESLint with one command

conaclos
8pts1
biomejs.dev 2y ago

BiomeJS 1.6 partial Vue, Svelte, Astro support

conaclos
6pts1
biomejs.dev 2y ago

BiomeJS 2024 Roadmap

conaclos
67pts23
biomejs.dev 2y ago

Biome 1.5: fast Prettier and ESLint alternative

conaclos
6pts3
prettier.io 2y ago

$20k bounty was claimed

conaclos
716pts326
biomejs.dev 2y ago

Biome v1.3: lint and format TypeScript and JSX in a fraction of a second

conaclos
8pts1
wpt.fyi 3y ago

Web Browser interoperability 2023 focus

conaclos
1pts0
rome.tools 3y ago

Rome v12.1: a linter formatter for TypeScript, JSX and JSON

conaclos
133pts130
rome.tools 3y ago

Rome v12 – Linter Formatter for JavaScript, TypeScript, JSX, and JSON

conaclos
9pts2
bugs.chromium.org 3y ago

V8 optimization: object spread does not preserve object shape

conaclos
1pts0
news.ycombinator.com 3y ago

Ask HN: Do you use Flow (JS type checker) in 2023?

conaclos
1pts2
blog.rust-lang.org 3y ago

Rust Types Team mission

conaclos
4pts0
rome.tools 3y ago

Rome v11 release – linter and formatter for JavaScript, TypeScript, and JSX

conaclos
1pts0
kdy1.dev 3y ago

Open-source TypeScript type checker by SWC's author

conaclos
2pts0
www.sunvisiondisplay.com 4y ago

First Reflective LCD indoor monitor – 32“ FullHD true-color 60Hz

conaclos
136pts53
news.ycombinator.com 4y ago

Ask HN: Why LEB128 and VLQ use Base 128 instead of 64?

conaclos
1pts4
github.com 8y ago

TypeScript Typeable Arrays

conaclos
2pts0
github.com 8y ago

TypeScript any is evil

conaclos
1pts0

For now the best option to write code that wants to live in both worlds is sans-io

Thanks for sharing! Reading the articles, it looks at me, it is a kind of manual reimplementation of the state machine generated by async? This also makes the code harder to reason with. I am unsure if it is worth the complexity.

One of the issue I face is a blocking function that takes a generic constrained by a `trait` and its async version takes a generic constrained by an `async trait`.

I recently started working with Rust async. The main issue I am currently facing is code duplication: I have to duplicate every function that I want to support both asynchronous and blocking APIs. This could be great to have a `maybe-async`. I took a look at the available crates to work around this (maybe-async, bisync), but they all have issues or hard limitations.

There is a relevant Wikipedia page about minifloats [0]

The smallest possible float size that follows all IEEE principles, including normalized numbers, subnormal numbers, signed zero, signed infinity, and multiple NaN values, is a 4-bit float with 1-bit sign, 2-bit exponent, and 1-bit mantissa.

[0] https://en.wikipedia.org/wiki/Minifloat

I tried Helix two years ago, unfortunately the default keymap was a bit frustrating to me. I don't mind changing my habits, however I had difficulty I made sense of the keymap design.

For example, typing `w` select the word. However, typing `2w` select the second word and not two words. To select two words you have to enter in visual mode (`v2w`). To remove two words you thus need to type `v2wd` or `wdwd`. In Vim you can type `d2w`. I miss this composability. In Kakoune (one of the main inspiration of Helix), you can type `2Wd` (`2wd` has the same behavior as Helix).

I was also hoping that the use of Ctrl/Alt modifiers be completely removed. Why not fully embrace modal editing?

If I remember correctly, TCO is now part of the ECMAScript standard. Safari has implemented it. The issue is that others engines have not because they are concerned about stack unwinding and stacktraces.

The following articles may also be of interest to the audience:

- The definitive guide to error handling in Rust [0]

- Error Handling for Large Rust Projects - Best Practice in GreptimeDB [1]

- Designing error types in Rust [2]

- Modular Errors in Rust [3]

[0] https://www.howtocodeit.com/articles/the-definitive-guide-to... [1]: https://greptime.com/blogs/2024-05-07-error-rust [2]: https://mmapped.blog/posts/12-rust-error-handling [3]: https://sabrinajewson.org/blog/errors

Zig's Lovely Syntax 12 months ago

I like the idea of repeating the delimiter on every line. However `//` looks like a comment to me. I could simply choose double quote:

    const still_raw =
        "const raw =
        "    "Roses are red
        "    "  Violets are blue,
        "    "Sugar is sweet
        "    "  And so are you.
        "    "
        ";
        "
    ;
This cannot be confused with a string literal because a string literal cannot contain newline feeds.

Thanks for sharing!

The only thing I disagree with is error wrapping. While I agree that the main error should not expose dependencies, I find it useful to keep a `cause` field that corresponds to the inner error. It's important to trace the origin of an error and have more context about it. By the way, Rust's [Error] trait has a dedicated `cause` method for that!

[Error] https://doc.rust-lang.org/nightly/core/error/trait.Error.htm...

I accept, however this requires to create many types with corresponding implementations (`impl From`, `impl Display`, ...). This is a lot of boilerplate.

Hi! Biome core contributor here.

It could be nice to have a more descriptive title like:

    "Biome 2: first type-aware linter that doesn't require TSC"
Some details about this reelase:

- Type-aware lint rules

- Plugins

- Monorepo support

- Revamped, configurable import sorting

- Linter domains

- Bulk suppressions

- Analyzer assist

I once tried to use parser combinators and I was quite disappointed by the result. I find it harder to read and to handle error than regular recursive descendant parsers.

I find it strange that the article doesn't talk about the alternative to checked arithmetic: explicit Wrapping [0] and Saturating [1] types, also provided as methods on numeric types (e.g. `usize::MAX.saturating_add(1)`).

Regarding `as` casting, I completely agree. I am trying to use safe `From::from` instead. However, this is a bit noisy: `usize::from(n)` vs `n as usize`.

[0] https://doc.rust-lang.org/std/num/struct.Wrapping.html [1] https://doc.rust-lang.org/std/num/struct.Saturating.html

I kinda disagree with the conclusion. Punctuation is important to humans, it makes it more parsable/readable. I just accept that in a multi-line context they are not so useful, because the newline acts like a kind of punctuation. So I could make them optional and provide some recommendations: use them in a single line, and don't use them when a newline follows.