diff options
author | Rickard Green <[email protected]> | 2014-03-20 19:01:11 +0100 |
---|---|---|
committer | Rickard Green <[email protected]> | 2014-03-21 13:24:40 +0100 |
commit | bf3222f10edbd1f6a5186c8fb35c29900ad0665f (patch) | |
tree | fa761309c15de7996634a9474919c9621c126336 /erts/doc/src/erl_nif.xml | |
parent | 3c06b5b3cdde72453d97910889e38e91c1dd4870 (diff) | |
download | otp-bf3222f10edbd1f6a5186c8fb35c29900ad0665f.tar.gz otp-bf3222f10edbd1f6a5186c8fb35c29900ad0665f.tar.bz2 otp-bf3222f10edbd1f6a5186c8fb35c29900ad0665f.zip |
Introduce minimum allowed major driver and nif versions on load
Diffstat (limited to 'erts/doc/src/erl_nif.xml')
-rw-r--r-- | erts/doc/src/erl_nif.xml | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/erts/doc/src/erl_nif.xml b/erts/doc/src/erl_nif.xml index 8b19725c02..6b1f4cccf8 100644 --- a/erts/doc/src/erl_nif.xml +++ b/erts/doc/src/erl_nif.xml @@ -316,6 +316,32 @@ ok <p>The library initialization callbacks <c>load</c>, <c>reload</c> and <c>upgrade</c> are all thread-safe even for shared state data.</p> </item> + + <tag><marker id="version_management"/>Version Management</tag> + <item><p> + When a NIF library is built, information about NIF API version + is compiled into the library. When a NIF library is loaded the + runtime system verifies that the library is of a compatible version. + <c>erl_nif.h</c> defines <c>ERL_NIF_MAJOR_VERSION</c>, and + <c>ERL_NIF_MINOR_VERSION</c>. <c>ERL_NIF_MAJOR_VERSION</c> will be + incremented when NIF library incompatible changes are made to the + Erlang runtime system. Normally it will suffice to recompile the NIF + library when the <c>ERL_NIF_MAJOR_VERSION</c> has changed, but it + could, under rare circumstances, mean that NIF libraries have to + be slightly modified. If so, this will of course be documented. + <c>ERL_NIF_MINOR_VERSION</c> will be incremented when + new features are added. The runtime system uses the minor version + to determine what features to use. + </p><p> + The runtime system will normally refuse to load a NIF library if + the major versions differ, or if the major versions are equal and + the minor version used by the NIF library is greater than the one + used by the runtime system. Old NIF libraries with lower major + versions will however be allowed after a bump of the major version + during a transition period of two major releases. Such old NIF + libraries might however fail if deprecated features are used. + </p></item> + <tag>Dirty NIFs</tag> <item><p><marker id="dirty_nifs"/><em>Note that the dirty NIF functionality is experimental</em> and that you have to enable support for dirty |