about summary refs log tree commit diff
path: root/src/libexpr
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2012-11-27T12·29+0100
committerEelco Dolstra <eelco.dolstra@logicblox.com>2012-11-27T12·29+0100
commit8b8ee53bc73769bb25d967ba259dabc9b23e2e6f (patch)
tree79aab3b316d632fc663c1c78da25a88425f4275e /src/libexpr
parent5943f41b8bd95b8559cb6768bb0a1151f6bee68d (diff)
Add builtin constants ‘langVersion’ and ‘nixVersion’
The integer constant ‘langVersion’ denotes the current language
version.  It gets increased every time a language feature is
added/changed/removed.  It's currently 1.

The string constant ‘nixVersion’ contains the current Nix version,
e.g. "1.2pre2980_9de6bc5".
Diffstat (limited to 'src/libexpr')
-rw-r--r--src/libexpr/primops.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc
index 509297003f6e..6876b2853add 100644
--- a/src/libexpr/primops.cc
+++ b/src/libexpr/primops.cc
@@ -1143,6 +1143,16 @@ void EvalState::createBaseEnv()
     mkString(v, settings.thisSystem.c_str());
     addConstant("__currentSystem", v);
 
+    mkString(v, nixVersion.c_str());
+    addConstant("__nixVersion", v);
+
+    /* Language version.  This should be increased every time a new
+       language feature gets added.  It's not necessary to increase it
+       when primops get added, because you can just use `builtins ?
+       primOp' to check. */
+    mkInt(v, 1);
+    addConstant("__langVersion", v);
+
     // Miscellaneous
     addPrimOp("import", 1, prim_import);
     addPrimOp("isNull", 1, prim_isNull);