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

Introduce $ABI [strict|lenient] for VMOD descriptors #2330

Closed
wants to merge 1 commit into from

Conversation

dridi
Copy link
Member

@dridi dridi commented May 17, 2017

When versioning appeared in the VRT API, the goal was to allow loose
ABI compliance on loaded VMODs based on the major/minor revision against
which it was built. Strict checking was performed if Varnish was built
from the master branch in the VCC code, but omitted by the child.

This however has two flaws:

  1. Release management might go wrong like it happened in 5.1.2 that got
    released from the master branch.

  2. This doesn't solve the original problem that some VMODs might rely
    on supported symbols encompassed by the VRT major/minor while others
    may choose to integrate deeper with Varnish and lose guarantees.

This patch retires the VCS_Branch macro that is no longer needed and
provides a new $ABI stanza that defaults to strict when omitted. To
help discovery, in-tree modules advertise a strict match.

To indicate that a VMOD needs the exact Varnish build to be loaded,
the VMOD's metadata contains 0.0 for the VRT major/minor revision.

In addition, both the VCC and child now perform the full ABI compliance
check, picking the strict or lenient option depending on the VMOD's
metadata.

When versioning appeared in the VRT API, the goal was to allow loose
ABI compliance on loaded VMODs based on the major/minor revision against
which it was built. Strict checking was performed if Varnish was built
from the master branch in the VCC code, but omitted by the child.

This however has two flaws:

1) Release management might go wrong like it happened in 5.1.2 that got
   released from the master branch.

2) This doesn't solve the original problem that some VMODs might rely
   on supported symbols encompassed by the VRT major/minor while others
   may choose to integrate deeper with Varnish and lose guarantees.

This patch retires the `VCS_Branch` macro that is no longer needed and
provides a new `$ABI` stanza that defaults to strict when omitted. To
help discovery, in-tree modules advertise a strict match.

To indicate that a VMOD needs the exact Varnish build to be loaded,
the VMOD's metadata contains 0.0 for the VRT major/minor revision.

In addition, both the VCC and child now perform the full ABI compliance
check, picking the strict or lenient option depending on the VMOD's
metadata.
@bsdphk bsdphk added the a=OK'ed label Aug 14, 2017
@dridi dridi closed this in 3199e69 Aug 14, 2017
@dridi dridi deleted the vmod_abi branch June 11, 2018 09:39
dmatetelki pushed a commit to dmatetelki/varnish-cache that referenced this pull request Mar 14, 2019
When versioning appeared in the VRT API, the goal was to allow loose
ABI compliance on loaded VMODs based on the major/minor revision against
which it was built. Strict checking was performed if Varnish was built
from the master branch in the VCC code, but omitted by the child.

This however has two flaws:

1) Release management might go wrong like it happened in 5.1.2 that got
   released from the master branch.

2) This doesn't solve the original problem that some VMODs might rely
   on supported symbols encompassed by the VRT major/minor while others
   may choose to integrate deeper with Varnish and lose guarantees.

This patch retires the `VCS_Branch` macro that is no longer needed and
provides a new `$ABI` stanza that defaults to strict when omitted. To
help discovery, in-tree modules advertise a strict match.

To indicate that a VMOD needs the exact Varnish build to be loaded,
the VMOD's metadata contains 0.0 for the VRT major/minor revision.

In addition, both the VCC and child now perform the full ABI compliance
check, picking the strict or vrt option depending on the VMOD's metadata.

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

Successfully merging this pull request may close these issues.

3 participants