4 ms·
Was curious does Serenity use _any_ external libraries? For example crypto, font rendering, etc
by arduinomancer 5y ago
Was curious does Serenity use _any_ external libraries?
For example crypto, font rendering, etc
- mythz 5y agoNone in the default OS, it uses existing C++ build tools to build the OS, but the OS itself (inc. Kernel, GUI & default Apps) was built from scratch. Including Font Editor (https://github.com/SerenityOS/serenity/tree/master/Userland/Applications/FontEditor https://github.com/SerenityOS/serenity/tree/master/Userland/...), rendering and Crypto impl (https://github.com/SerenityOS/serenity/tree/master/Userland/Libraries/LibCrypto https://github.com/SerenityOS/serenity/tree/master/Userland/...). It does maintain a large number of ports you can install as add-ons to be able to use existing software, tools, languages & games, etc in SerenityOS. https://github.com/SerenityOS/serenity/tree/master/Ports https://github.com/SerenityOS/serenity/tree/master/Ports
- arduinomancer 5y agoWow just browsing the libraries directory is impressive https://github.com/SerenityOS/serenity/tree/master/Userland/Libraries https://github.com/SerenityOS/serenity/tree/master/Userland/...
- surajrmal 5y agoIt looks like they default to using recursive mutexes. In my experience those are a recipe for hard to debug deadlocks because if you acquire multiple locks, it's hard to ensure you always acquire them in the same order.
- jagger27 5y agoLike anything and everything in Serenity, if you think it could be better, make it so.
- ptomato 5y agothere's an old trick for that that works pretty well; always acquire all locks you need in alphabetical (or some sorted) order
- surajrmal 5y agoThe problem is that you can't statically confirm this via static analysis when you use recursive locks. You can only use runtime lock dep analysis to figure out when you might have gotten it wrong. Often you may not acquire locks in the same function, so it's not very intuitive based on control flow to understand whether or not you've acquired them in the wrong order.