twizzler-operating-system / twizzler

The Twizzler Operating System
BSD 3-Clause "New" or "Revised" License
68 stars 15 forks source link

Refactor dynamic linker, add compartment support #165

Closed dbittman closed 8 months ago

dbittman commented 9 months ago

This PR does a bunch of cleanup and refactoring of the dynamic linker, moving it towards a usable state. It uses that refactoring to implement support for multiple compartments, changing (critically) the dependency search-and-load algorithm to handle multiple compartments with instances of the same underlying library. There are also some changes external to dynlink for supporting some of these new abilities.

This version of the dynamic linker was able to load two libraries into different compartments, each with their own copy of libstd, and execute them. Pretty neat.

Future PRs will:

One fun thing is that this dynamic linker was written to carefully compartmentalize OS-specific stuff it needs in loading, so in theory, it's portable!

dbittman commented 9 months ago

Also I have no idea why my git config keeps resetting it's like melete is messing with me.

PandaZ3D commented 8 months ago

Do we need a tracking issue for the reference runtime or compartmentalization support?

dbittman commented 8 months ago

Probably, yeah. Although I was planning to play around with the project management stuff, using this as a case-study, soon.