<div dir="ltr">Hello Loïc,<div><br><div class="gmail_extra"><div class="gmail_quote">On Fri, Feb 14, 2014 at 12:01 PM, Loïc Hoguin <span dir="ltr"><<a href="mailto:essen@ninenines.eu" target="_blank">essen@ninenines.eu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br>
I realize that the lists module has BIFs so perhaps running a VM with a changed lists module could create issues. I am not well versed enough to know that for sure.<br></blockquote><div><br></div><div>Right now the list of bifs and which modules they are in reside in $ERL_TOP/erts/emulator/beam/bifs.tab and is statically compiled into the VM. What happens is that when loading modules that list is checked to see if a function in that module is a BIF and the big code is linked instead. </div>
<div><br></div><div>So if you want to change the lists (or ets for that matter) module you would have to create a solution for either in compile time removing those bifs or possibly figuring it out in runtime. </div><div>
<br></div><div>It should be possible to do in a separate fork of Erlang/OTP to start with and if it proves to be generally useful I don't see why it wouldn't be possible to bring it upstream. </div><div> </div><div>
On Fri, Feb 14, 2014 at 12:01 PM, Loïc Hoguin <span dir="ltr"><<a href="mailto:essen@ninenines.eu" target="_blank">essen@ninenines.eu</a>></span> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<br>
Any chance of having that dependency removed eventually? There are 13 occurrences of lists: in the preloaded modules. The functions used are keyreplace, member, reverse, foldl, foreach. The first 3 are BIFs, the other 2 aren't. Perhaps the first 3 could also be available from a prim_lists module and the other two inlined? This way the VM doesn't require any additional module to run, except of course error_logger but that's only a requirement when you want to extend the basic functionality.<br>
</blockquote><div><br></div><div>This is something that would be a lot easier to do and less complicated to make it into upstream. As long as there are tests that make sure nothing is broken over time. </div><div><br></div>
<div>Lukas</div><div>PS. Keep in mind that these are my personal opinions. DS</div></div></div></div></div>