[Haskell-cafe] Library maintainers: Include your library in CodeWorld web-based Haskell environment
Chris Smith
cdsmith at gmail.com
Mon Jun 8 21:42:47 UTC 2020
(Sorry for the delay. I overlooked this question.)
> It is OK to include client-side Javascript frameworks?
I was about to say no. But now that you've got me thinking, perhaps I
could change this. I described by thinking at
https://github.com/google/codeworld/issues/1362. So my better answer is
"not yet".
On Tue, Jun 2, 2020 at 7:41 AM Alberto G. Corona <agocorona at gmail.com>
wrote:
> It is OK to include client-side Javascript frameworks?
>
> El mar., 2 jun. 2020 a las 1:09, Chris Smith (<cdsmith at gmail.com>)
> escribió:
>
>> Thanks for the questions.
>>
>> 1. Yes, network I/O is excluded. The only real exceptions here are
>> stdin/err/out, and code that's specifically written to work in GHCJS, such
>> as JavaScript.Web.XMLHttpRequest and JavaScript.Web.WebSocket modules in
>> ghcjs-base.
>>
>> 2. Depending on bytestring is fine, because it has a shim that makes it
>> work with GHCJS. I believe
>> https://github.com/ghcjs/ghcjs/tree/ghc-8.6/lib/boot/shims is a list of
>> shimmed libraries that you don't need to worry about depending on.
>>
>> 3. Exporting inessential TH features is fine. It's just that people
>> attempting to use your library via CodeWorld won't be able to use
>> them, since CodeWorld's web interface will refuse to build anything that
>> enables Template Haskell.
>>
>> It looks like your project is completely excluded only because of the
>> network I/O. If the network I/O is not necessary and you could exclude the
>> dependency using a combination of "#ifdef ghcjs_HOST_OS" in source and "if
>> impl(ghcjs)" in the cabal file, then it could still work. But, of course,
>> of the network I/O is the whole point, then it's not going to work out.
>> JavaScript
>>
>> On Mon, Jun 1, 2020 at 2:30 PM Viktor Dukhovni <ietf-dane at dukhovni.org>
>> wrote:
>>
>>> On Mon, Jun 01, 2020 at 11:37:12AM -0400, Chris Smith wrote:
>>>
>>> >
>>> https://github.com/google/codeworld/blob/master/codeworld-available-pkgs/codeworld-available-pkgs.cabal
>>> >
>>> > Packages that fit here are:
>>> >
>>> > 1. No I/O, except for stdin/out/err. Since CodeWorld runs code in a
>>> web
>>> > browser, there is no filesystem, for example.
>>>
>>> I assume this also precludes network I/O?
>>>
>>> > 2. Do not rely on native libraries, or have dependencies that do.
>>> This all
>>> > depends on the library building with GHCJS.
>>>
>>> I guess this also excludes `bytestring`, which uses memcpy(), memchr(),
>>> and writes directly allocated memory?
>>>
>>> -- | Wrapper of 'mallocForeignPtrBytes' with faster implementation
>>> for GHC
>>> --
>>> mallocByteString :: Int -> IO (ForeignPtr a)
>>> mallocByteString = mallocPlainForeignPtrBytes
>>>
>>> and all of its dependencies?
>>>
>>> > 3. Do not require use of Template Haskell by clients. It's okay if
>>> your
>>> > package needs template Haskell to build, but people using your library
>>> via
>>> > CodeWorld cannot yet use TH themselves.
>>>
>>> Is it that Template Haskell features in modules are not available to
>>> users, or that modules that export even "inessential" TH features are
>>> precluded.
>>>
>>> For example, can the platform support a module that exports a
>>> convenience TH "splice", if the same can be done slightly less
>>> conveniently (e.g. run-time, rather than compile-time error checks) at
>>> runtime via alternative functions?
>>>
>>> [ My current project does network I/O, uses `bytestring`, and provides
>>> TH-splices for two types of compile-time validated literals, so I
>>> would assume is a non-starter on all three counts. ]
>>>
>>> --
>>> Viktor.
>>> _______________________________________________
>>> Haskell-Cafe mailing list
>>> To (un)subscribe, modify options or view archives go to:
>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>>> Only members subscribed via the mailman list are allowed to post.
>>
>> _______________________________________________
>> Haskell-Cafe mailing list
>> To (un)subscribe, modify options or view archives go to:
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>> Only members subscribed via the mailman list are allowed to post.
>
>
>
> --
> Alberto.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20200608/860c600f/attachment.html>
More information about the Haskell-Cafe
mailing list