Yeah I wish they were spending some development effort on the actual IDE and not just all AI stuff. There's still basic stuff like the Process Viewer CPU usage just not working at all, which makes it very difficult to diagnose performance issues - one of the main complaints people have about VSCode!
Though I will say using AI to generate alt text is a pretty decent idea.
Haha this is also the classic Linux experience. Any complaints about stuff not working properly get met with "It works for me" and "You're doing it wrong". Oh and don't forget "did you submit a bug report?" and "if you don't like it, fork it!".
I mean, you can use tabs consistently within a project. The only thing I'm aware of that actually bans tabs is YAML and... well, you can go a long way by always doing the opposite of what YAML does.
That's definitely better, but still not as good as Windows. If you click on an area that isn't a drag source it should be raised on button down. I presume it doesn't do that?
If you click on an area of the window that cannot be dragged from, it raises it on mouse-down.
If you click on an area of the window that can be dragged on, it doesn't raise if you start a drag, otherwise it raises it on mouse-up.
That's the desired behaviour. I agree people didn't really explain that clearly.
I haven't looked into it for over 20 years but as I recall it is impossible to do this with X11. I have no idea if Wayland added some kind of support for this, but I would be quite surprised given how long it took them to do screenshots.
Part of the difficulty is that you need to somehow query an app on mouse-down if it might start a drag. I have no idea how Windows does that... but... they solved it decades ago.
IMO it's because open source developers commonly use editors that have poor support for tabs, like Vim and Emacs.
Tabs are definitely better but to use them properly you do really need a "visualise whitespace" option enables. Emacs does it like this and Vim like this. Both awful.
Possibly also a bit because tabs for indentation, alignment for spaces is just too complex for most developers. Hell most can barely even get spaces right. I work in a couple of languages without an autoformatter (e.g. SystemVerilog) and some of our files are a joke. A mixture of 2 and 3 space indentations, sometimes on the same line!
Honestly I don't need to know anything about it at all except that it's a payment system designed by GNU to know that it stands zero chance of success.
GNU are uber-geeks that do not comprehend usability at all. They think everyone is happy to go to key exchange parties and run their own servers and so on. There's absolutely no chance this is understandable by normal people.
Impressive. I would imagine it is very difficult to get native performance without ISA extensions like Apple had to do for TSO and other awkward x86isms.
I would guess someone will make a RISC-V extension for that stuff eventually, though I haven't seen anyone propose one yet.
If you want two processes to communicate (IPC) normally, you would set up some shared memory, so that in each process's virtual memory some pages are shared between them both, so when process A writes to that memory it is visible to process B and vice versa. There are other ways to do IPC but this is the fastest since it doesn't involve any syscalls (context switch to the kernel which is slow).
However it still requires each process to copy its private data into and out of the shared memory. Also it still requires a context switch from process A to process B.
A common use of IPC is for RPC (Remote Procedure Calls). Basically you want to run a function in the other process. This solution does that but differently and faster.
First, both processes share the same virtual memory. This is normally a recipe for disaster since it completely destroys the normal process memory sandboxing (a memory error in one process can now crash the other one!). However they use a new Intel MPK hardware feature that allows splitting the pages into one of 16 groups ("keys"), and you can control read/write access to each group independently.
Next when process A wants to call a function in process B, the RPAL code does a lightweight context switch in user space. I guess this just means changing the MPK key, and normal saving of registers for the function call. I'm not sure what else you'd need to change. It's a little unclear about how you pass heap data from process A to process B. I guess both processes just have read access to the entire address space? That doesn't really change the security model on Unix since any process can already debug any other process with no extra permissions.
It sounds very similar to running two processes as if they were threads in the same process. Why not just use threads? Probably a better option if you can, but I guess if you are e.g. running processes written in different languages that might be tricky?
Really? I found it completely uneventful. The only thing that I needed to learn was that you have to make the installable USB drive using Rufus which I had never heard of (think I last installed Windows about 10 years ago...).
FreeCAD 1.0 is actually pretty good now. Definitely usable if you're only doing basic things.
SolveSpace is also nice but it has some deal-breaker limitations like not supporting chamfers/bevels.