No, they are not supposed to work when you compile with R16 and run on R15.
The other way around I think there's even a one or two  releases span
guarantee...


On Fri, Mar 29, 2013 at 1:37 PM, Devin Torres <notifications@github.com>wrote:

> In lib/elixir/lib/kernel.ex:
>
> > +
> > +  It is implemented as a macro so it can be used in guards.
> > +
> > +  Please note that in versions of Erlang prior to R16B there is no BIF
> > +  for this operation and it is emulated by converting the tuple to a list
> > +  and back and is, therefore, inefficient.
> > +
> > +  ## Example
> > +
> > +      tuple = { :bar, :baz }
> > +      insert_elem(tuple, 0, :foo) #=> { :foo, :bar, :baz }
> > +  """
> > +  case :proplists.get_value(:insert_element,
> > +                            :proplists.get_value(:exports, :erlang.module_info,[])) do
> > +    3 ->
> > +      defmacro insert_elem(tuple, index, value) when is_integer(index) do
>
> @yrashk <https://github.com/yrashk> I suspect if it works it's by
> accident. BEAMs aren't meant to be shared between versions like that AFAIK.
> For example, try compiling rebar with R14 and using it from R15.
>
> —
> Reply to this email directly or view it on GitHub<https://github.com/elixir-lang/elixir/pull/859/files#r3591183>
> .
>