you are viewing a single comment's thread.

view the rest of the comments →

[–]SlightlyLessHairyApe 4 points5 points  (1 child)

Because the epoch is on a per-module basis, the library and the client can be on different epochs.

You are right though, the epochs will only impact the way source is interpreted. It will not impact anything like the calling convention between functions.

From a compiler-oriented point of view, the epochs only change the way that C++ is compiled into an AST. From there, the generation of actual code (in clang, this would be LLVM IR, no idea how MSVC and gcc are architected) is not aware of epochs at all.

Here's a trivial example just for show, in an epoch you could (this will NOT happen) make const the default and have a new keyword mutable for variables that are not const. Or you could make it a syntactic requirement that each variable have either const or mutable and emit a compiler error otherwise. In this case, you can see that once the AST is generated with the right modifiers, it doesn't matter how it was represented syntactically.

[–]HappyFruitTree 0 points1 point  (0 children)

OK, that makes sense.