cyclone/c-api/md_CHANGELOG.html
2017-02-25 22:15:49 -05:00

220 lines
12 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Cyclone Scheme: Changelog</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Cyclone Scheme
&#160;<span id="projectnumber">0.4</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">Changelog </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2>Next Release (Tentatively 0.4) - TBD</h2>
<ul>
<li>Added a new bignum type to support exact integers of practically unlimited size.</li>
<li>As part of the bignum changes, modified the code for exact integer arithmetic to detect overflow.</li>
<li>Added documentation for the <a href="http://justinethier.github.io/cyclone/c-api/modules.html">C API</a>.</li>
</ul>
<h2>0.3.4 - February 10, 2017</h2>
<p>Features</p>
<ul>
<li>Koz Ross added implementations of the following SRFI's:<ul>
<li>SRFI 28 - Basic format strings</li>
<li>SRFI 60 - Integers as bits</li>
<li>SRFI 121 - Generators</li>
</ul>
</li>
<li>Allow a program to have more than one <code>import</code> declaration. A program can now also use <code>cond-expand</code> to selectively expand <code>import</code> declarations.</li>
<li>Added the <code>-A</code> and <code>-I</code> compiler options from SRFI 138 to <code>cyclone</code>:</li>
</ul>
<blockquote class="doxtable">
<p><code>-A directory</code></p>
<p>Append directory to the list of directories that are searched in order to locate imported libraries.</p>
<p><code>-I directory</code></p>
<p>Prepend directory to the list of directories that are searched in order to locate imported libraries. </p>
</blockquote>
<ul>
<li>Added the <code>-CP</code>, <code>-CE</code>, and <code>-CL</code> compiler options to allow passing arbitrary flags to the C compiler:</li>
</ul>
<blockquote class="doxtable">
<p><code>-CP cc-commands</code></p>
<p>Specify a custom command line for the C compiler to compile a program module. See Makefile.config for an example of how to construct such a command line.</p>
<p><code>-CE cc-commands</code></p>
<p>Specify a custom command line for the C compiler to compile an executable.</p>
<p><code>-CL cc-commands</code></p>
<p>Specify a custom command line for the C compiler to compile a library module. </p>
</blockquote>
<ul>
<li>Updated the garbage collector to enhance performance for programs with a high allocation rate, and to scale better to multiple concurrent threads.</li>
<li>Improved error handling by <code>display</code> and <code>write</code>.</li>
<li>Removed the <code>make_int</code> C macro which was deprecated and could cause problems when used in FFI functions.</li>
<li>Added a <code>with-handler</code> exception handler form based on the syntax from Bigloo.</li>
</ul>
<p>Bug Fixes</p>
<ul>
<li>Thanks to Koz Ross, <code>equal?</code> has been updated to check bytevectors for deep equality.</li>
<li>Prevent crashes when allocating large bytevectors.</li>
<li>Display characters such as <code>#\space</code> correctly when output via <code>write</code>.</li>
<li>Thanks to Seth Alves, removed unnecessary include of <code>ck_string.h</code> which is not provided in older versions of <code>libck</code>.</li>
</ul>
<h2>0.3.3 - December 19, 2016</h2>
<p>Features:</p>
<ul>
<li>Added SRFI 113 - sets and bags.</li>
<li>Improved performance by more aggressively inlining primitives that work with immutable objects, such as the numeric arithmetic and comparison functions.</li>
<li>Allow the reader to recognize <code>#true</code> and <code>#false</code>.</li>
</ul>
<p>Bug Fixes</p>
<ul>
<li>Prevent C compilation errors when compiling strings with special characters in them such as <code>#\tab</code>, <code>#\alarm</code>, and <code>#\return</code>.</li>
<li>Do not generate invalid C code when compiling <code>+</code> or <code>*</code> without any arguments.</li>
<li>Handle compilation of variable-argument anonymous lambdas. For example: <code>((lambda x x) 3 5)</code>.</li>
</ul>
<h2>0.3.2 - November 22, 2016</h2>
<p>Features:</p>
<ul>
<li>Recognize escaped vertical line and hex scalar value characters when reading a string.</li>
<li>Added <code>current-thread</code> to SRFI 18.</li>
<li>Added the <code>include</code> and <code>include-ci</code> macros.</li>
</ul>
<p>Bug Fixes</p>
<ul>
<li>Fixed a crash when running <code>cyclone</code> on 32-bit platforms.</li>
</ul>
<h2>0.3.1 - November 20, 2016</h2>
<p>Features:</p>
<ul>
<li>Thanks to ecraven, added R7RS function <code>exact-integer-sqrt</code> to <code>(scheme base)</code>.</li>
<li>Allow the reader to recognize <code>+inf.0</code>, <code>-inf.0</code>, <code>+nan.0</code>, and <code>-nan.0</code>.</li>
<li>Allow <code>cond-expand</code> to test for whether a library exists using the form <code>(library {library name})</code>.</li>
<li>Added command line option <code>-O</code> to set the optimization level. For now there is <code>-O0</code> to disable optimizations and the default setting to enable them. Going forward there will be more fine-grained control.</li>
<li>Reduce size of compiled code by inlining constant values. This reduced the code size of various cyclone libraries by approximately 33%. Added other inlining as well to slightly improve performance.</li>
<li>Increased allocation speed when objects are moved to the heap during a major GC.</li>
</ul>
<p>Bug Fixes</p>
<ul>
<li>Only throw a divide by zero error for integer division. Floating point divide by zero is allowed and evaluates to <code>nan</code>.</li>
<li>Modified SRFI 106 to be smarter about compiling <code>AI_V4MAPPED</code> and <code>AI_ALL</code>, which are not defined on OpenBSD.</li>
<li>Fixed the <code>member</code> functions to always return the list when a value is found, instead of <code>#t</code>.</li>
<li>Fixed <code>string-&gt;number</code> to return <code>#f</code> if the string cannot be converted.</li>
<li>Fixed a bug where the optimizer would sometimes generate incorrect code when a mutating primitive (EG: <code>set-car!</code>) was passed an expression rather than an identifier as the variable argument.</li>
<li>Prevent the runtime from crashing when a non-numeric value type is passed to a numeric function.</li>
</ul>
<h2>0.3 - October 22, 2016</h2>
<p>Features:</p>
<ul>
<li>Improve performance by inlining numeric arithmetic and comparison operations.</li>
<li>Reverted <code>assq</code>, <code>assv</code>, <code>memq</code>, and <code>memv</code> back to primitives for improved performance. In addition the compiler was modified to allow for more efficient compilation of <code>assoc</code> and <code>member</code>.</li>
<li>Improved library support to recognize all of the import set forms: <code>only</code>, <code>except</code>, <code>prefix</code>, and <code>rename</code>.</li>
<li>Allow explicit renaming macros to be declared interactively. This is the first limited support for calling <code>define-syntax</code> from <code>eval</code>.</li>
<li>Added the <code>get-environment-variables</code> function from R7RS.</li>
<li>Added support for the following SRFI's:<ul>
<li>SRFI 106: A basic socket interface</li>
<li>SRFI 128: Comparators</li>
</ul>
</li>
</ul>
<p>Bug Fixes</p>
<ul>
<li>Improved macro hygiene support to properly rename temporary variables in the <code>let-values</code> macro.</li>
<li>Improve output of <code>error</code> by using <code>write</code> to output objects as they are represented in memory.</li>
<li>Check for duplicate lambda parameters during compilation.</li>
<li>Fixed an error that was being raised when calling <code>(random-source-randomize! default-random-source)</code> when using SRFI 27.</li>
<li>Raise an error if <code>list-&gt;string</code> encounters a list element that is not a character.</li>
</ul>
<h2>0.2 - September 7, 2016</h2>
<p>Features:</p>
<ul>
<li>Added the following libraries from R7RS-large red edition (data structures):<ul>
<li>SRFI 1 list library</li>
<li>SRFI 133 vector library</li>
<li>SRFI 111 boxes</li>
<li>SRFI 117 mutable queues</li>
<li>SRFI 132 sorting library</li>
</ul>
</li>
<li>Added SRFI 2, <code>and-let*</code></li>
<li>Added <code>parameterize</code> from section 4.2.6 of R7RS to the <code>(scheme base)</code> library.</li>
<li>Added <code>let-values</code> and <code>let*-values</code> to <code>(scheme base)</code>.</li>
<li>Added <code>infinite?</code>, <code>finite?</code>, and <code>nan?</code> to <code>(scheme inexact)</code>.</li>
<li>Added string ports to <code>(scheme base)</code> - <code>open-input-string</code>, <code>open-output-string</code>, and <code>get-output-string</code>.</li>
<li>Added bytevector ports to <code>(scheme base)</code> - <code>get-output-bytevector</code>, <code>open-input-bytevector</code>, and <code>open-output-bytevector</code>.</li>
<li>Modified <code>cyclone</code> to also search the current working directory for built-in headers and libraries.</li>
</ul>
<p>Bug Fixes:</p>
<ul>
<li>Thanks to Mark Meyer, identified and fixed several segfaults in <code>write</code> and <code>display</code>.</li>
<li>Updated <code>write</code> to display escaped character sequences (EG: <code>\t</code>) instead of literal characters.</li>
<li>Prevent C compilation errors when building a program that only contains basic primitives or a constant at the top level.</li>
<li>Fixed the compiler to allow application of a function that can take any number of arguments. For example: <pre class="fragment"> ((lambda test (write test)) 1 2 3 4)
</pre></li>
<li>Updated <code>eval</code> to handle functions that take an optional number of arguments.</li>
<li>Updated <code>number-&gt;string</code> to omit leading zeros for binary conversions.</li>
<li>Fixed <code>apply</code> to use the proper semantics when receiving more than one data argument.</li>
<li>Changed the <code>assoc</code> and <code>member</code> functions to accept an optional comparison function, and modified both families of functions to be native Scheme functions instead of C primitives.</li>
<li>Allow libraries to contain multiple <code>import</code>, <code>begin</code>, and <code>export</code> sections. </li>
</ul>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>