aboutsummaryrefslogtreecommitdiffhomepage
path: root/notes/iface_compiler_compat.txt
blob: 2dfb37f93f9dd8c4e084bbd5722f384bbf96ad76 (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

Interfaces and compiler compatibility
=====================================

It would be nice to be able to:

1. allow compilation of older interface versions with older compilers
   (and require newer compiler versions for later interface versions)
2. optionally use functionality from the compiler, if the compiler
   supports it.


These are tricky problem, given that:

- We want to ensure that compilation will either fail or succeed on ALL
  supported platforms (the "upto" directive is an exception to this rule,
  since there might be deprecations in the "upto" version which an old
  compiler cannot possibly know about)

- We want to keep source code reasonably clean (without things like #ifdef)


These problem could instead be solved by the package manager, which would
install only packages that the compiler supports.
--> We need to be able to request the latest supported interface file for
    a given compiler version.
    - But it is even trickier than that. We also need to take any
      \interface_depends attributes into account!


Additionally, we need to be able to exclude unstable/pre-release versions in
the package manager (but it would also be nice to be able to incldue them).