<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    Hi Mikael,<br>
    <br>
    first of all, apologies for the late reply, but your list of
    questions is somewhat overwhelming :)<br>
    I'll have a shot at answering them and maybe others will correct
    me/add to the discussion.<br>
    <br>
    On 25-03-11 22:18, Mikael wrote:<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite"><b>Documentation, community<br>
      </b>&nbsp;* What tutorials to Clean's language &amp; environment are
      you aware of today?<br>
    </blockquote>
    There are some online books available. You can find an overview on
    <a class="moz-txt-link-freetext" href="http://wiki.clean.cs.ru.nl/Documentation">http://wiki.clean.cs.ru.nl/Documentation</a><br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">&nbsp;* Are there other forums for Clean programming than
      this emailing list - any IRC channel, annual symposium or alike?<br>
    </blockquote>
    Work on Clean is presented in the common functional programming
    scientific conferences (ICFP,IFL,TFP etc).<br>
    There is no irc channel, the wiki can be considered a forum, but
    most edits are from Clean developers atm.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite"><br>
      <b>Live coding, debugging</b><br>
      &nbsp;* Is there anything like a REPL / live code environment? I
      understood Hilde should do this, where do I find its executable?
      Does it have any particular limitations?<br>
    </blockquote>
    Clean has no live interpreter. Hilde is an interactive shell that
    let's you define and evaluate clean expressions. So it is very close
    to an interactive code environment. I don't know the details
    exactly.<br>
    You can find Hilde in the Libraries folder of the Clean 2.2
    distribution. (It was removed in the 2.3 distribution because it is
    no longer maintained)<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">&nbsp;* What debugging features are there? Can I get a
      complete stack &amp; environment trace/dump on errors?<br>
    </blockquote>
    You can get a stack trace, you can do heap and time profiling, and
    there are trace functions.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">
      <br>
      <b>Performance<br>
      </b>&nbsp;* The Clean vs. GHC benchmarks I've seen are not so clear
      about what's what. What is your understanding of Clean's current
      performance in relation with that of other environments such as
      GHC and C code?<br>
      &nbsp;&nbsp;&nbsp;&nbsp; The numbers I'm interested in is when all involved
      environments have high optimization levels enabled, but still
      technically are high-level languages i.e. heap&amp;stack overflow
      checking is on, that kind of thing.<br>
    </blockquote>
    I don't know the details on this, maybe John van Groningen can
    enlighten you. My understanding is that performance is still better
    than GHC and depending on the type of problem comparable to C code.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">
      &nbsp;* Which algorithm does the GC run on?<br>
    </blockquote>
    There's multiple implemented as options, but I think the default is
    mark&amp;sweep.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite"><br>
      <b>Exceptions<br>
      </b>&nbsp;* How developed is the exception handling today, can Clean
      code catch any exception such as IO or heap overflow exceptions?<br>
    </blockquote>
    There is an extension, but it is not part of the language itself.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite"><br>
      <b>C/C++ integration</b><br>
      &nbsp;* What level of integration / Foreign Function Interface is there
      from Clean to the C or C++ worlds?<br>
      &nbsp;&nbsp;&nbsp;&nbsp; * Can you inline C or C++ code in your Clean code - if so
      how?<br>
    </blockquote>
    No, you have to compile C code separately and then call them from
    Clean.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">&nbsp;&nbsp;&nbsp;&nbsp; * Can you import and call external (i.e. C)
      procedures and call them - if so how?<br>
    </blockquote>
    Yes, you can make "ccall" functions that call external procedures.
    It is documented somewhat in the "calling c from clean" document
    that you can find in the Help menu of the clean IDE.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">
      &nbsp;&nbsp;&nbsp;&nbsp; * What data types can I pass from Clean to the C world, and
      back?<br>
    </blockquote>
    Basically anything you have in C. Structs are a bit messy though,
    since there is no parsing of .h files you have to represent
    C-structs in Clean as arrays (Int, or Char) and use offsets to
    dereference their fields. You can also opt to do the
    struct-&gt;array conversion in an interface layer in C.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite"><br>
      <b>License</b><br>
      &nbsp;* Is the licensing LGPL or commercial also today? Furthermore:<br>
    </blockquote>
    I think the license is still the same.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">&nbsp;&nbsp;&nbsp; * Does this mean a commercial application can use
      Clean as long as the runtime library link file is not statically
      linked into the app? Or would you allow statically linked apps
      also?<br>
    </blockquote>
    I think static linking is also allowed.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">
      &nbsp;&nbsp;&nbsp; * Is there any intent to release Clean's environment as BSD or
      MIT i.e. a completely open-sourced license?<br>
    </blockquote>
    I would be in favor. I am not sure what the plans are.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">&nbsp;* Is the Clean developers team open to open source
      contributions to the codebase?<br>
    </blockquote>
    Yes, but we are not really organized as an open source organization.
    So patches may take a while to get through quickly and we don't
    always have time to respond to questions fast. We have recently
    moved all sources to svn though, to make it easier to enable
    external contributions.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite"><br>
      <b>Unicode support</b><br>
      &nbsp;* What level of Unicode support does Clean have?<br>
    </blockquote>
    None natively.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">&nbsp;&nbsp; * For instance, are characters 32bit / can they be?<br>
    </blockquote>
    Chars are just 8-bit. However we have a Text library that defines
    all string operations overloaded. So it is possible to use different
    encodings. The console IO functions are not unicode though.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">&nbsp;&nbsp; * Is this support all-pervasive throughout Clean?<br>
    </blockquote>
    This approach is at the library level, so in that sense yes :)<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite"><br>
      <b>Bytecode format</b><br>
      &nbsp;* Is there any documentation of the VM/bytecode intermediary
      format when compiling Clean to C? Where's the closest thing to
      documentation out there?<br>
    </blockquote>
    There is info in the book "Functional Programming and Parallel Graph
    Rewriting". Clean is not compiled to C by the way. It is compile to
    the intermediate ABC instructions from which Intel assembly is
    generated directly.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">
      &nbsp;&nbsp;&nbsp;&nbsp; * Has there been any initiative to compile this format to any
      other language than C?<br>
    </blockquote>
    Not that I am aware of.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">&nbsp;&nbsp;&nbsp;&nbsp; * Would you think it would be a good idea to use
      the bytecode for other things than C code generation?<br>
    </blockquote>
    I am not sure, I gues not.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite"><br>
      <b>Multiprocessing</b><br>
      &nbsp;* Does Clean of today always run in one and the same OS process
      &amp; one and the same OS thread? Can it use more? I read on the
      ML that someone made a parallel variant for m68k:s.<br>
    </blockquote>
    Today Clean is single threaded. Clean used to be used for parallel
    processing research, but that was before the days of the multicores.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">&nbsp;* Is there any green threading system?<br>
    </blockquote>
    Not that I know of.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">
      <br>
      <b>Portability<br>
      </b>&nbsp;* Is Clean completely locked to Windows and Linux, or can all
      non-GUI-parts be fully utilized on all other supporting systems
      such as Mac OS X, BSD and IPhones?<br>
    </blockquote>
    It is not locked to Windows and Linux per se. Platform availability
    is mostly a matter of manpower. There is an alpha version of a Mac
    OS X compiler being tested currently. BSD would not be problem.
    Iphones are a bit more difficult because they would require a code
    generator for t<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">&nbsp;* Is the Dynamics feature and the Hilde shell only
      available on Windows also today, if so how come?<br>
    </blockquote>
    Unfortunately yes. Again a matter of manpower. Although, dynamics on
    linux/osx are on top of the wishlist.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">
      &nbsp;* Can Clean be satisfactorily used from the console (to compile,
      run apps, live interaction, other activities)?<br>
      <br>
    </blockquote>
    In my opinion yes. Console I/O is enough to make servers or CGI
    apps. Since I am doing mostlty web apps, the console is all I need.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite"><b>IO</b><br>
      &nbsp;* Can a Clean app do IO asynchronously, if so how, does the
      functionality fall back on a central event loop based on select()?<br>
    </blockquote>
    Yes. I don't know the mechanism used by the Object I/O library. If
    you do it yourself, you have to do a select based loop.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">
      &nbsp;* What level of IO performance would you say that Clean has?<br>
    </blockquote>
    I don't know.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite"><br>
      <b>Runtime environment<br>
      </b>&nbsp;* Which are the runtime environment files that are
      dynamically used by a Clean-generated executable, what directory
      can i find them? (on Windows/Linux)<br>
    </blockquote>
    Normally the runtime system is statically linked into your
    executable and there are no additional runtime files needed.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">
      &nbsp;* What's the lower and upper intervals for how much space the
      runtime dependency files can take for an app? (Hello world and up
      to max complexity)<br>
    </blockquote>
    I can't answer this question.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite"><br>
      <b>Memory use</b><br>
      &nbsp;* Do you view Clean as completely safe for 'space leaks' (given
      that the programmer was somehow present while coding)?<br>
    </blockquote>
    Yes. In normal programs (low level drivers etc excluded) you don't
    have to do any memory management at all.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">
      <br>
      <b>Robustness<br>
      </b>&nbsp;* Would you say that Clean's environment is robust by
      industry standards i.e. a non-GUI app would not crash because of
      Clean bugs ever?<br>
    </blockquote>
    Clean bugs in the core system are very rare. I do get compiler bugs
    every now and then, but they usually just make the compiler crash :)
    not yield incorrect executables.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">&nbsp;* What real-world/production apps are you aware of
      that Clean has been/is used in?<br>
    </blockquote>
    I don't know any real production apps written in Clean that were
    made recently. <br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">
      <br>
      <b>Completeness, development</b><br>
      &nbsp;* By your own standards, how complete is Clean's language
      specification and environment?<br>
    </blockquote>
    By my standards, the language specification is pretty much complete.
    In terms of standard libraries it is very incomplete. It would help
    a lot if there were more libraries. I am personally trying to
    improve this by collecting/developing a set of libraries in the
    Clean Platform project (<a class="moz-txt-link-freetext" href="http://wiki.clean.cs.ru.nl/Clean_platform">http://wiki.clean.cs.ru.nl/Clean_platform</a>)<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">&nbsp;* How final is the language specification, could
      incompatibility with newer versions of Clean happen for current
      code?<br>
    </blockquote>
    The language is still evolving, but backwards compatibility is
    maintained whenever possible.<br>
    <blockquote
      cite="mid:AANLkTimyRt0c+msYWnkW953ciU05BSOWXbRWzbkytRM_@mail.gmail.com"
      type="cite">
      &nbsp;* Approx what development takes place on Clean today? What are
      the current development objectives? What maintenance can you
      expect the next years or so?<br>
    </blockquote>
    <br>
    Clean development is currently mostly focused on supporting the
    research projects in Nijmegen. There is development on improving the
    dynamics and generics systems. There is a lot of energy put in the
    itasks system (itasks.cs.ru.nl) which results in a focus on Web
    related libraries for Clean. Also the Mac port is being worked on as
    well as integration with Haskell.<br>
    <br>
    <br>
    I have done my best to answer my questions, so I think it is only
    fair to ask one in return ;)<br>
    Where did you look for this information before turning to the
    mailinglist? Maybe I can put more of this info on the wiki and add
    links in the right places, so you could have found it online.<br>
    <br>
    Best,<br>
    Bas<br>
    <br>
  </body>
</html>