Jeff, your continued dedication to this constantly impresses me.  Good work.
-E

On Thu, Jul 9, 2015 at 1:28 PM, Jeff Waller <[email protected]> wrote:

> A couple of new features with this version
>
> Windows  support (finally)
>
> There were a couple of things preventing this.
>
> First off Julia is compiled with gcc on Windows, but node-gyp needs MSVC,
> that had to be overcome, the
> the good news was the library libjulia.dll can be used by the MIcrosoft
> compiler/linker so long as an implib
> is created first (libjulia.lib).  This can be generated from
> libjulia.dll.  The same thing has to occur with
> libopenlibm.dll, because julia uses libm functionality not available in
> Microsofts libm.  These openlibm symbols
> had to be taken directly from openlibm.dll because though it's linked into
> julia.exe, it's not (can't be?) linked into
> libjulia.dll.  Any embedding program on Windows would suffer from this see
> #11419 <https://github.com/JuliaLang/julia/issues/11419> for instance.
>
> Second, this really needs to all happen automatically.  The previous
> version assumed these Microsoft libraries
> were already in place, but that's really putting too much of a burden for
> someone that want's to just do `npm install`
> This version takes care of that.
>
>
>
> Shared Buffers
>
> Hey remember the question in this announce
> <https://groups.google.com/forum/#!msg/julia-users/xSSrQRThSJw/tZlkQFBmtT0J>,
> if it's possible for Julia and Javascript to share the same underlying
> memory buffer for arrays?  Well it is possible, and this version
> implements that.
>
> Yes, It is more efficient especially if the array is used multiple times,
> as before it would have to be copied back and forth
> and in addition there are some cute tricks.
>
> For instance node has problems with large arrays if it has to manage them
>
> > x = new Int32Array(536870911)
>
> RangeError: Invalid array buffer length
>
>    at new ArrayBuffer (native)
>
>    at new Int32Array (native)
>
>    at repl:1:5
>
>    at REPLServer.defaultEval (repl.js:132:27)
>
>    at bound (domain.js:254:14)
>
>    at REPLServer.runBound [as eval] (domain.js:267:12)
>
>    at REPLServer.<anonymous> (repl.js:279:12)
>
>    at REPLServer.emit (events.js:107:17)
>
>    at REPLServer.Interface._onLine (readline.js:214:10)
>
>    at REPLServer.Interface._line (readline.js:553:8)
>
> ...
>
> > x = new Int32Array(268435455)
>
> FATAL ERROR: invalid array length Allocation failed - process out of
> memory
>
>
> But v8 will allow indexing of arrays up to 2^31 -1 if only those could
> somehow be created...
>
> > bizarro% node
>
> > julia = require('node-julia')
>
>
> > var x = julia.eval('Array(Int32,2^31 -1)')
>
> undefined
>
> > x.length
>
> 2147483647
>
> > x[2147483646] = 1;      // does not crash....
>
>
> There are some other updates s as well, but that's the highlights.
>
>

Reply via email to