aboutsummaryrefslogtreecommitdiffhomepage
path: root/notes/deprecations_archival.txt
blob: 5b7d74fde75e7cc496f69ec001ea4e84ea67ca73 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

Deprecations/Archival
=====================

It would be nice to have a way to deprecate and/or archive "old" things:

* old functions/types/constants
* old versions / \api_defs

On the implementation side, it is easy. Just add a new file called
"old.slul" with all deprecated function bodies (or a directory with
multiple files).

On the interface side, it will require some special handling. But
it does not have to be complex! Here is a fairly simple solution:

    \slul 0.0.0
    ...
    \api_def 1.2 AbC123dEf...
    ...
    # not sure if the filename should be possible to override
    \deprecated deprecated.slul
    \source impl_stuff1.slul
    \source impl_stuff2.slul
    ...
    \source deprecated/impl1.slul

The \deprecated part of the interface would only have to be parsed in
two cases:

* When the module is the main module being compiled.
* When the a non-existent version is parsed.

When installing the module interface to the slul-interfaces directory,
the deprecated files would have to go into either:

* a combined file, perhaps "MODULE_deprecated.slul"
    - a bit confusing when the filename is in the attribute
* a directory containing the files with deprecated interface parts
  (e.g. "MODULE-deprecated/")
    - this could result in old files being present in "MODULE-deprecated/"