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 opam complexity: mirage-protocols and mirage-stack #1255

Closed
9 tasks done
hannesm opened this issue Dec 2, 2021 · 4 comments
Closed
9 tasks done

reduce opam complexity: mirage-protocols and mirage-stack #1255

hannesm opened this issue Dec 2, 2021 · 4 comments

Comments

@hannesm
Copy link
Member

hannesm commented Dec 2, 2021

in our last meeting (//cc @mirage/core) we discussed that the mirage ecosystem and packages are slightly complex, since the interface and implementation -- even if we only have a single one -- are disconnected in separate opam packages (and git repositories). one path is to move everything to a monorepo. another path is to move the signatures back to the implementations and cut major releases (this will of course make the monorepo approach still doable).

To start this off, I spend some time on mirage-protocols and mirage-stack -- moving them back to the respective repositories. This turned out pretty nicely, and touches only some packages (this meta-issue is meant to track the PRs with the goal to merge and release them):

@hannesm
Copy link
Member Author

hannesm commented Dec 3, 2021

The plan for smooth transition is:

  • get the code into place (remove dependencies on miage-protocols & mirage-stack in ethernet, arp, tcpip, charrua)
  • release mirage-protocols and mirage-stack that are completely deprecated
  • still keep the same module types around -- a unikernel that uses Mirage_stack.V4V6 should continue to work
  • once we revise/break the API, conflict in tcpip (or other libraries) with mirage-protocols/mirage-stack

I'll continue to work on that and try to get the smooth migration done. This is also independent of MirageOS releases (and will work with both mirage3 and mirage4).

@hannesm
Copy link
Member Author

hannesm commented Dec 5, 2021

ok, an update to compatibility:

  • mirage-protocols and mirage-stack now depend on tcpip (and are deprecated), in Deprecated mirage-stack#21 and Deprecate mirage-protocols#30
  • this allows mirage-skeleton to mostly work (including static_website_tls) out of the box
  • application/dhcp (and application/pin) do not work since ethernet revised the interface (it is packed now, and Ethernet.Packet.sizeof_ethernet is the new name of Ethernet_wire.sizeof_ethernet) -- but the fix is straightforward
  • there are some other API changes (such as Mirage_protocols.Keepalive.t is no longer defined, etc.) -- but I couldn't find a package that uses them.

The release plan would be:

  • the above 4 packages (ethernet, arp, tcpip, charrua), and mirage-protocols and mirage-stack (where existing ethernet, arp, tcpip, charrua will get upper bounds for mirage-protocols and mirage-stack)
  • we can smoothly update the unikernels with the newer packages
  • at some point in the future (with mirage 4): there will be no mirage-protocols and mirage-stack around anymore.

Any objections? I could do the above package-by-package end of the upcoming week (dec 9 / 10).

For tcpip, eventually @dinosaure would like to cut a release before the changes above with the rst fixes?

@dinosaure
Copy link
Member

I would like to fix an other bug on mirage-tcpip before a release, see mirage/mirage-tcpip#462 but we can integrate your change and the fix into the same release.

@hannesm
Copy link
Member Author

hannesm commented Dec 17, 2021

everything is released (PRs for the main / 4 branch are pending) with mirage 3.10.8. I'm done here.

@hannesm hannesm closed this as completed Dec 17, 2021
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

2 participants