Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
matklad
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
14 ms
·
121.
▲
by
matklad
4y ago
As far as I can tell, the point about Kotlin is correct.
122.
▲
by
matklad
4y ago
> So I suspect that a more efficient path for any new language is to design your front end for interactive IDE use from day one. Maybe! One problem is that this is going to be harder than starting with a batch compiler: you might not get
123.
▲
by
matklad
4y ago
I am in a similar position actually -- I don't find autocomplete to be the main feature of IDE, it doesn't add that much over dumb hippie-expand. Code navigation is much more important.
124.
▲
by
matklad
4y ago
I've wrote a bit about this in https://matklad.github.io/2020/11/11/yde.html Some specific things which IntelliJ brings to me: 1. Rich refactors -- things like "change signature" are a huge tim
125.
▲
by
matklad
4y ago
Several things: _First_, a general clean architecture considerations -- protocol is "view", it shouldn't infect the model. _Second_, LSP is a way to consume semantic info, but there might be others. A different protocol might
126.
▲
by
matklad
4y ago
That’s what deno is doing IIRC! They rely heavily on design work that went into web standards and Go standard library, and harness open-source community to deliver implementation.
127.
▲
by
matklad
4y ago
The point is that you don’t need common protocol. A bunch of language-specific protocols would have worked! It’s interesting to ask why that didn’t happen.
128.
▲
by
matklad
4y ago
Agree with the analysis here! The way I see it, there are possible two grand architectures: * you either have a single, multi-language combine supporting any language. In a sense, LLVM/GCC but for front-ends * or you have a bunch of
129.
▲
by
matklad
4y ago
Thanks for the correction! Indeed, I am not super familiar how things work under the hood, I just observed a proliferation of completion frameworks on top!
130.
▲
by
matklad
4y ago
> which is a show stopper for me since I've invested a lot into my neovim config. Level of confidence just 0.4, but, if you invested the same amount of time into IntelliJ platform, you might have got more out of it. The “advanced se
131.
▲
by
matklad
4y ago
And I’d argue that that’s right! As the post says, there’s no LSP in core VS Code either!
132.
▲
by
matklad
4y ago
> But this seems to be a VSCode issue. That’s a protocol issue! While LSP has a method to report a transient (edge triggered) error, it doesn’t have a way to report a persistent (level triggered) status. And to solve configuration proble
133.
▲
by
matklad
4y ago
Well, I think it’s a bit more than that already :-) https://m.youtube.com/playlist?list=PLhb66M_x9UmrqXhQuIpWC5V... https://rust-analyzer.github.io/blog/2020/07/20/three-archit...
134.
▲
by
matklad
4y ago
> VS, C++ Builder, KDevelop, QtCreator My understanding is that the state of semantic IDE features for C++ was pretty miserable until CLion and clangd came along. That is, sure, there were a whole lot of “literally” IDEs — gui wrappers a
135.
▲
by
matklad
4y ago
I would say it depends on the implementation. Slack is pretty horrible, but Zulip is the best thing ever.
136.
▲
by
matklad
5y ago
`patchelf` solves a different problem: it fixes up an already built binary. Here, I am building the binary myself, so I’d rather make that just work without any extra build steps.
137.
▲
by
matklad
5y ago
> I suspect that NixOS is playing with this in order to have a relocatable install Kinda the opposite: NixOS doesn’t really have a sysroot.
138.
▲
by
matklad
5y ago
>But a LSP mostly deals with a single request at a time by a single client. Not really —- there’s bowl of spaghetti worth of concurrency in LSP. All of the following things can happen at the same time, and they use the same state: *
139.
▲
by
matklad
5y ago
If you pick any language which is non-esoteric today (C, C++, Python, JavaScript, Java), you should do fine for the next 20 years. If you want to make a bet on a language which isn’t supper big yet, but might be in the future, than Rust is
140.
▲
by
matklad
5y ago
> you pay the overhead for the thread safety every time you use the object wether you need to or not. That’s not correct. See, eg, `Mutex::get_mut` ( https://doc.rust-lang.org/stable/std/sync/struct.Mutex.ht
141.
▲
by
matklad
5y ago
This is more nuanced, as there are three separate components: * time to compile the syn itself * time to run syn on the inputs * time to compile whatever syn generated I didn’t do a super thorough studies of things, but my impres
142.
▲
by
matklad
5y ago
rust-analyzer highlights everything , I have an empty vs code theme for it somewhere. But yeah, in general LSP highlighting is specified in augmentative way.
143.
▲
by
matklad
5y ago
I don’t have a good resource, but https://m.youtube.com/watch?v=0HlrqwLjCxA is probably an OK start.
144.
▲
by
matklad
5y ago
The thing is, for IDE purposes “production ready” has a different definition. The thing shouldn’t have 100% parity with the compiler, it should be close enough to be useful, and it must be resilient. This is definitely not trivial , but is
145.
▲
by
matklad
5y ago
Nah, it’s a totally valid question: I indeed didn’t clarify where incrementality starts to happen.
146.
▲
by
matklad
5y ago
Yeah, to clarify, memoization happens after parsing. So for syntax highlighting we have a situation where from-scratch parsing is faster than incremental typechecking.
147.
▲
by
matklad
5y ago
Everything is doable with LSP as it is an extensible RPC essentially. But the above things are not done in LSP generally. It doesn’t have first-class support for structural search replace. It doesn’t have support for interactive refactors w
148.
▲
by
matklad
5y ago
> Well, because it’s gosh-darn hard to do it the right way. I think this overstates the difficulty. This of course depends a lot on the language, but for a reasonable one (not C++) you can just go and write the parser by hand. I’d ballpa
149.
▲
by
matklad
5y ago
Heh, I opened the comment section to link https://kazlauskas.me/entries/errors.html and https://sled.rs/errors.html :-)
150.
▲
by
matklad
5y ago
> In practice, once a codebase gets above a specific size, it becomes completely impossible to exclude any features in a crate's default list because `default-features=false` only applies locally Curious, what that specific size app
More ›