Hi All,<br><br><div class="gmail_quote">2010/4/20 John M McIntosh <span dir="ltr">&lt;<a href="mailto:johnmci@smalltalkconsulting.com" target="_blank">johnmci@smalltalkconsulting.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Well I asked for it...<br>
<br>
(a) you can get graphic cut/copy/paste of complex data on the macintosh and windows.<br>
<br>
(b) I&#39;d rather have people learn FFI &amp; Alien so they can build their own api to Rome, Pango, &amp; Curl instead of waiting on about 4 people in the world to get around to building and distributing *official* plugins .<br>

</blockquote><div><br></div><div>I agree with this, but I also understand the security and modularity concerns of those who want to deploy without FFI and with plugins only.  I think it might be worth-while, and would certainly be feasible and fun, to write an automatic plugin generator, e.g. above David&#39;s SmartSyntaxPlugin, that would take a set of FFI methods and shrink-wrap them into a plugin.  So the natural development cycle for plugins could become prototype and extend using the FFI and deploy via the generator and a plugin compilation step.  That would be analogous to the approach taken to produce the VM itself.</div>

<div><br></div><div>I hope this approach would make it easier for people to produce plugins, since more of the <a href="http://www.thefreedictionary.com/gubbins" target="_blank">gubbins</a> would be hidden.  That might be naive given complications with mapping object and memory references across the boundary, but it might also be an easier way to integrate things like <a href="http://lists.squeakfoundation.org/pipermail/vm-dev/2010-March/004106.html">Andreas&#39; proposed handle framework</a>.</div>

<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
(c) When your curl, rome, etc FFI call freaks and toasts your image why you can do debugging, versus relying on a handful of people in the world to grind thru some compiler, gnu debug session to figure out why that register move results in a fatal Virtual memory page fault.<br>
</blockquote><div><br></div><div>Certainly we got some good mileage out of catching external errors in FFI calls and returning these as primitive error codes. Basically it helps you find which FFI calls cause crashes, because the system will typically stay up long enough for you to open the debugger and identify which FFI call failed and what its arguments were.  Why the call failed isn&#39;t so easy.  The errr codes are an address and some OS-specific exception identifier. One then either has to think hard (infer from the args why the call might fail) or decamp to a low-level debugger, rerun the call and use any additional info it provides to debug the call.</div>
<div><br></div><div>This is easy to add to the current VM which already has fatal signal handlers and primitive error codes.  The FFI must set a flag &quot;in FFI call&quot; (clearing on callback, resetting on return from callback) which is tested in the fatal signal handlers and cause the exception info to be squirrelled away and the FFI call to fail.  If the VM has enough state to take a callback it typically has enough state to cause the current FFI callout to fail and from the fatal signal handler longjmp to somewhere that can continue execution through the primitive failure.  (and if it doesn&#39;t now, it can be made to, and not on every FFI call either, e.g. the interpreter can call setjmp prior to entering the interpreter loop, Cog does this to be able to switch between native code and interpreted code)</div>
<div><br></div><div>2¢</div><div><br></div><div>Eliot</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div><div></div><div><br>
<br>
On 2010-04-19, at 11:41 PM, Torsten Bergmann wrote:<br>
<br>
&gt;&gt; I wouldn&#39;t include neither FFI or Alien FFI in neither PharoCore or PharoDev<br>
&gt;&gt; image.<br>
&gt;<br>
&gt; +1<br>
&gt;<br>
&gt;&gt; That&#39;s only my opinion.<br>
&gt;<br>
&gt; Maybe Stef should tell us more about why he thinks it should be included.<br>
&gt;<br>
&gt; Bye<br>
&gt; T.<br>
&gt;<br>
&gt; --<br>
&gt; GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT!<br>
&gt; Jetzt freischalten unter <a href="http://portal.gmx.net/de/go/maxdome01" target="_blank">http://portal.gmx.net/de/go/maxdome01</a><br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Pharo-project mailing list<br>
&gt; <a href="mailto:Pharo-project@lists.gforge.inria.fr" target="_blank">Pharo-project@lists.gforge.inria.fr</a><br>
&gt; <a href="http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project" target="_blank">http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project</a><br>
<br>
</div></div><font color="#888888">--<br>
===========================================================================<br>
John M. McIntosh &lt;<a href="mailto:johnmci@smalltalkconsulting.com" target="_blank">johnmci@smalltalkconsulting.com</a>&gt;   Twitter:  squeaker68882<br>
Corporate Smalltalk Consulting Ltd.  <a href="http://www.smalltalkconsulting.com" target="_blank">http://www.smalltalkconsulting.com</a><br>
===========================================================================<br>
<br>
<br>
<br>
<br>
</font><br>_______________________________________________<br>
Pharo-project mailing list<br>
<a href="mailto:Pharo-project@lists.gforge.inria.fr" target="_blank">Pharo-project@lists.gforge.inria.fr</a><br>
<a href="http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project" target="_blank">http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project</a><br></blockquote></div><br>