Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modularize building runners #261

Open
3 tasks
HalosGhost opened this issue May 8, 2024 · 0 comments
Open
3 tasks

Modularize building runners #261

HalosGhost opened this issue May 8, 2024 · 0 comments
Labels
difficulty/03-medium Likely to take a couple of weeks; best accomplished by multiple contributors enhancement/feature Adds new functionality enhancement/refactor Improves flexibility/maintainability

Comments

@HalosGhost
Copy link
Collaborator

I alluded to this lightly in #195 (specifically, in a comment), but PArSEC has a bit of a major limitation right now with respect to what runners are available: the supported runners must be known at build-time. This practically means all runners must live in this repository (increasing the build burden for this repository and project maintenance burden), and that agents cannot have added runners without redeployment (increasing friction for any long-running deployment).

The first steps towards solving all these problems (or, at least enabling their solutions) is to

  • modularize each runner such that they can be built against a reasonably minimal API/ABI (rather than tightly depending on the exact implementation of the agent)
  • build dynamic libraries for each runner

Second, once runners are built modularly and are dynamically linked

  • have the agent load runner libraries on-startup (and provide a reload signal—conventionally triggered via SIGHUP)

In plain C and more generally on POSIX systems, this is just done with dlopen() and friends. However, as I was mulling over this, I stumbled on dylib which might offer a cross-platform solution to this problem. Adding dependencies is never free, and we should carefully consider whether this is a good plan-of-action at all.

I do think the maintenance potential for extracting runners from this repository (which also trivially enables others to make runners targeting parsec without having to embed them directly in a fork) is worth considering.

@HalosGhost HalosGhost added enhancement/feature Adds new functionality enhancement/refactor Improves flexibility/maintainability difficulty/03-medium Likely to take a couple of weeks; best accomplished by multiple contributors enhancement/build-system Improves an aspect of the build system and removed enhancement/build-system Improves an aspect of the build system labels May 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
difficulty/03-medium Likely to take a couple of weeks; best accomplished by multiple contributors enhancement/feature Adds new functionality enhancement/refactor Improves flexibility/maintainability
Projects
None yet
Development

No branches or pull requests

1 participant