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

Reduce reliance on platform-specific APIs, improve Windows support #462

Open
3 of 6 tasks
MichaelRawson opened this issue Jul 18, 2023 · 4 comments
Open
3 of 6 tasks
Assignees

Comments

@MichaelRawson
Copy link
Contributor

MichaelRawson commented Jul 18, 2023

Vampire should not need a great deal of platform-specific code. This is a tracking issue to remove as much as possible, and make what we absolutely need as cross-platform as we can.

We currently use platform-specific code:

  • for launching and monitoring processes in portfolio mode
  • for monitoring elapsed time
  • for monitoring used instructions
  • for semaphores used to synchronise portfolio processes
  • for our custom memory allocator
  • because we forgot to remove it

I'm currently looking at whether we can remove the memory allocator and the semaphores. Watch this space!

@MichaelRawson
Copy link
Contributor Author

Using something akin to UNIX fork() is not really negotiable - we want to keep the existing Vampire state, notably the parsed problem, when we start a strategy - but it doesn't exist on Windows. We will have to rely on Cygwin for this on Windows, and hope that the various incompatibilities don't bite us.

@MichaelRawson
Copy link
Contributor Author

Allocator is dead, long live Allocator! #469 removed the platform-specific code for allocation.

@MichaelRawson
Copy link
Contributor Author

No more semaphores, no more semaphore support requirement.

@MichaelRawson
Copy link
Contributor Author

Replacing global operator new portably to limit memory usage was so painful in the end (#592) that we gave up and call POSIX setrlimit in #594. Ho hum. Better POSIX than Linux.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant