

Go was a "first mover" language, that showed one could create a modern compiled language that compiled to native object code, but then Rust, Nim, Crystal, and Zig came along and improved upon Go's Plan9-inspired austerity. Lies we tell ourselves to keep using Golang I think the post-Go languages are underappreciated: Nim, Crystal, Zig, and of course Rust, which now has a vocal growing community.Also written in Rust, it's a smarted cd command that remembers which directories you visit frequently, so you can jump to those directories with just one command. My developer workflow using WSL, tmux and Neovim You might have seen in some of the screenshots that I just have to run z license-generator to jump to that directory.
#Runjs reviews code#
So adding that back in with the newer code structure would be a big project (that I'm not likely to complete). There used to be support in the Cranelift compiler back-end for RISC-V, but that was removed. What will you do with your jh7110? Mucking around with Rust.lazier, if you will: I just read through the rust book available on.
#Runjs reviews how to#
#Runjs reviews windows#
We also should clean up any pending windows when the "memory-pressure" notification is fired. I agree with Boris that we should clean up less than 10 windows after a while on a timer. Your editor has left trailing whitespace on a number of lines. Past that, now that Kyle is back he's a much better reviewer for this than I am. Or better yet, just put the list of windows directly in the WindowRequestCleanupEvent and then keep a pointer to it around so you (1) can append to it and (2) don't bother posting a new one while one is live.Ĥ) During js::NukeCrossCompartmentWrappers, don't compartments possibly get destroyed as you go? And if so, what makes sure that new ones don't get allocated in their spot, confusing the matcher? Seems like you need to keep those compartments alive until after NukeCrossCompartmentWrappers returns. It needs to be heap-allocated, and deleted late enough in shutdown. I would prefer it if we went ahead and did the cleanup after some time has passed since the last thing was enqueued to gPendingWindows, even if there aren't 10 windows in there yet.ġ) Do we have any guarantees that the nsGlobalWindow can't die (nulling out the weakref) while its JSObject is still alive? Especially in the outer window case, this worries me a bit.Ģ) Why do we want to add to gPendingWindows from WindowDestroyedEvent::Run, as opposed to from whatever posts the WindowDestroyedEvent? Are we trying to ensure that the nuking comes after the NotifyObservers call there? I guess we do need that it's worth documenting.ģ) Having a statically allocated nsCOMArray is not OK. This seems fairly suboptimal for the normal browsing case. You have to close 9 other windows before anything gets cleaned up. So the biggest issue I see is that closing a single window does absolutely nothing to clean it up.

Sorry for the lag here I was trying to make sure I understood this code correctly.

and a session restore time of still 55 minutes where almost all tabs are _not_ loaded, whereas a restore time of 60 seconds may be acceptable), the current fix seems to be "good enough".Ĭomment on attachment 8693031 But given there are many other much more pressing performance bugs (e.g. Although that would require a coarse-grained reverse > optimized further by only visiting those compartments that ever held a CCW (Note that these numbers come from a firefox build where the GC was tuned to kick in only seldomly, else would dominate all CPU time, anyway.) With that change, that time is negligible. Without that change, most of the CPU time would be spent in js::NukeCrossCompartmentWrappers(). > it improves the runtime of closing N tabs out of M from O(N*M) to O(M).įor a restore of a real-life session which consists of about 8000 tabs, without that change, the firefox process consumed 285 minutes of CPU time, while with that change, the firefox process consumed 55 minutes of CPU time.
#Runjs reviews Patch#
I'm curious about performance numbers If I understand that patch correctly
