"Runtime", "run time", and "run-time"

The CLR under .NET is referred to as the "Common Language Runtime." It seems that the convention is "runtime" for a noun and "run-time" for the adjective. Is this correct or should it be "runtime" also? I'm inclined to think it should be like the following:

  1. The variable is typed at runtime.
  2. The runtime variable is null.

I (as a programmer and linguist) would pretty much always use runtime.

I think you might be building too much into the idea that runtime is an 'adjective' in compounds such as runtime environment. The word still remains more noun-like than adjective-like[*] in such cases and there's little motivation for inventing a special spelling in that case. And if you look at examples of actual articles, textbooks etc, I think you'll find most authors come to the same conclusion.

In the Java and C# APIs, I also don't think you'll find a case of it being spelt "RunTime" rather than "Runtime".

[*] cf. "more flexible environment"~"*more runtime environment"; "this environment is flexible"~"*this environment is runtime" etc. These aren't perfect tests, because "adjective" vs "noun" don't really constitute a perfect dichotomy. But you can see that "runtime" is more at the 'nouny' than the 'adjectivy' end of the scale in these cases.


This is not really an answer because I'm also lost but I'd like to point out something that seems to be overlooked in these three ways to write "runtime", "run time" or "run-time".

I would risk saying that all three mean different things, that I believe should be applied in different cases:

  • run time: this is how much time your program took to execute. If, on unix, you run time program, you get as output the program's run time (or its execution time). It doesn't sound right to me to refer to this as the program's runtime or run-time.

  • run-time: this is something that happens during a program's execution, in contrast with load-time (when it is loaded) or compile-time (when it is being compiled). Note that like "run time", I venture that "compile time" is the time it takes to compile, and compile-time is something that happens during a program's compilation (such as compile-time optimizations --- note again that "compile time optimizations" would also be valid if I was referring to optimizations that shorten the time an application takes to be compiled, not optimizations to the application itself).

  • runtime: this is what something is (e.g. "the Java runtime"). Again, it does not seem correct to me to say something like "My program is executed by the Java run time".

Does it really make sense to join all these uses together under one word? It seems to me that their distinction is useful.