<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p><font face="monospace">I kept my implementation for 'follow' very
        simple:</font></p>
    <p><font face="monospace">- only at the end<br>
        - not recursive, ie., the zone to which follow points does not
        have follow itself.</font></p>
    <p><font face="monospace">The reason is my experience with the
        Shanks database in its software version (not the book variant,
        which is nearly flat).<br>
        That one is full of jumps from one table to the other and back.
        It is extremely complicated to follow this as a human, which
        makes it extremely to maintain. The reason for this structure
        chosen by Shanks was that it was implemented in the lat 1970ies
        in Fortran an machines with very limited RAM. Data volume had to
        be kept to a minimum.<br>
        In the book publication, there was no space limit. This is why
        he used flat tables there.<br>
      </font></p>
    <p><font face="monospace">It is better to have a structure as simple
        and flat as possible. Readability for humans has to be kept in
        mind.</font></p>
    <p><font face="monospace">I designed my 'follow' excatly for the
        purpose of extending TZ database backwards. All sub-areas which
        exist pre-1970, for example 128 areas in the state of Illinois,
        340 in Indiana, 222 in New York state, 114 in Ohio, end up in
        the single zone which covers post 1970 Illinois, Indiana, New
        York or Ohio.</font></p>
    <p><font face="monospace">That gives a simple, readable and
        maintainable 'follow' syntax.</font></p>
    <p><font face="monospace">Any more complex follow structures are not
        worth the trouble.</font></p>
    <p><font face="monospace">In my implementation, each zone gets of
        course its complete stand-alone binary file. So any space saved
        in the source files with more complex jump structures gets lost
        in the binary files anyway.<br>
      </font></p>
    <p><font face="monospace">A major problem is that zic.c is not the
        only converter from source files to binary. If the source syntax
        is changed, all converters which are not patched, will fail.</font></p>
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 14.06.21 09:27, Paul Eggert wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:0289ac66-b581-e183-8140-0044d6af6bc1@cs.ucla.edu">Adding
      a "follow"-like syntax is a fine idea. I think it's been proposed
      before, but not implemented. I would hope that one could use
      "follow" not only at the end of a Zone, but also within a zone,
      such as "location X follows location Y from 1950 to 1990". Also,
      the code should defend itself against follow cycles (e.g., A
      follows B follows C follows A).
      <br>
      <br>
      Any changes along these lines would be complicated by
      backward-compatibility concerns, though. That is, we could use a
      "follow"-like syntax only in vanguard format at first. To give you
      a feel of how long this can take, we added support for %z in zone
      abbreviations in 2015f, and we're not using this feature even now
      in the vanguard data, much less the main data (this is mostly due
      to my lack of time...).
      <br>
    </blockquote>
  </body>
</html>