[rb-general] rb-prefix-map spec: don't be as democratic to consumers

Daniel Shahaf danielsh at apache.org
Sun Mar 5 14:58:28 CET 2017


Hi,

https://github.com/infinity0/rb-prefix-map/blob/master/spec-main.rst#applying-the-decoded-structure
currently says:

> Consumers SHOULD implement one of the following algorithms:
>
> 1. …
>
> 2. …

The two algorithms, #1 and #2, have different semantics.

I think specifications MUST NOT allow consumers leeway to choose between
different semantics.  (Why?  Just imagine a world in which gcc
implemented #1 and clang implemented #2; in such a world, gcc and clang
wouldn't be interchangeable.)

So, I propose:

a. Specify precisely which semantics consumers MUST implement.  The spec
MAY recommend a particular algorithm, but MUST NOT give consumers choice
of semantics.

b. I have no opinion as to _which_ semantics consumers should implement;
whether the #1 semantics, the #2 semantics, or possibly something else.

Cheers,

Daniel

P.S. Use-case: imagine a compression program that links two different
libxz versions and allows choosing between them at runtime.  The source
of that program might include /foo/xz-42/main.c and /foo/xz-43/main.c
and its build system might then define BUILD_PATH_PREFIX_MAP="/foo/xz=xz".
If the build system then started using a different C compiler, the
program would no longer be reproducible.

P.P.S. Sorry for not catching this earlier, I was a bit busy for the
past few weeks.


More information about the rb-general mailing list