<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Radian Programming Language</title>
	<atom:link href="http://www.radian-lang.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.radian-lang.org</link>
	<description>A programming language for parallel computing</description>
	<lastBuildDate>Tue, 30 Apr 2013 20:49:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Case-folding function names</title>
		<link>http://www.radian-lang.org/2013/04/case-folding-function-names/</link>
		<comments>http://www.radian-lang.org/2013/04/case-folding-function-names/#comments</comments>
		<pubDate>Tue, 30 Apr 2013 20:49:39 +0000</pubDate>
		<dc:creator>Mars</dc:creator>
				<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://www.radian-lang.org/?p=652</guid>
		<description><![CDATA[Every programming language which manipulates strings offers a pair of functions which convert text to upper or lower case. These functions are often used to perform case-insensitive comparisons &#8211; you just convert both strings to either upper or lower case first. This generally works, but it fails for some scripts, and so the Unicode standard [...]]]></description>
			<content:encoded><![CDATA[<p>Every programming language which manipulates strings offers a pair of <a href="/2012/10/changing-the-case-of-a-string/">functions which convert text to upper or lower case</a>. These functions are often used to perform case-insensitive comparisons &#8211; you just convert both strings to either upper or lower case first. This generally works, but it fails for some scripts, and so the Unicode standard <a href="http://www.unicode.org/reports/tr21/tr21-5.html#Caseless_Matching">defines a case-folding transform which produces a normalized string suitable for caseless matching</a>. </p>
<p>Radian&#8217;s string library implements <code>to_upper</code> and <code>to_lower</code>, and it seems reasonable that it should offer a case-folding function too. But what to call it? Nobody else seems to be offering such a function: I can&#8217;t find one in .NET, in Python, in PHP, in Ruby &#8211; Go has a mysterious function called <a href="http://golang.org/pkg/unicode/#SimpleFold">SimpleFold</a>, but whatever it&#8217;s doing, it isn&#8217;t what I&#8217;m trying to do.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.radian-lang.org/2013/04/case-folding-function-names/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Release 0.7.0</title>
		<link>http://www.radian-lang.org/2013/04/release-0-7-0/</link>
		<comments>http://www.radian-lang.org/2013/04/release-0-7-0/#comments</comments>
		<pubDate>Thu, 25 Apr 2013 05:11:32 +0000</pubDate>
		<dc:creator>Mars</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.radian-lang.org/?p=648</guid>
		<description><![CDATA[
Fixed a bug in the garbage collector copy-forwarding mechanism which caused strange runtime library assertion failures after sync statements.
No longer misassigns a terminator byte when performing concatenations of certain very short strings.
 const statement renamed to def. The semantics are the same; only the keyword has changed. The statement never created a constant in the [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li>Fixed a bug in the garbage collector copy-forwarding mechanism which caused strange runtime library assertion failures after <code>sync</code> statements.</li>
<li>No longer misassigns a terminator byte when performing concatenations of certain very short strings.</li>
<li> <code>const</code> statement renamed to <code>def</code>. The semantics are the same; only the keyword has changed. The statement never created a constant in the mathematical sense; it simply defines a name for a value which cannot be redefined.</li>
<li>Importing a file whose name begins with an underscore no longer fails, trying to load a mangled version of the file name instead. While the compiler does not enforce this convention, prepending a file name with an underscore is a way to show that the file contains private implementation details and should not be imported from outside the directory which contains it.</li>
<li>No longer misprocesses hex character escapes inside string literals.</li>
<li>More specific error message when you try to modify the <code>self</code> object inside a function and not a method.</li>
<li>More helpful error message when an <code>import</code> statement fails: now points at the location of the import statement which failed. This might happen if you typo the import name and accidentally specify a file which does not exist.</li>
<li>Fixed a race condition in the parallel work dispatcher which sometimes caused a null dereference crash.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.radian-lang.org/2013/04/release-0-7-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Documentation for map and string objects</title>
		<link>http://www.radian-lang.org/2012/12/documentation-for-map-and-string-objects/</link>
		<comments>http://www.radian-lang.org/2012/12/documentation-for-map-and-string-objects/#comments</comments>
		<pubDate>Tue, 18 Dec 2012 00:01:06 +0000</pubDate>
		<dc:creator>Mars</dc:creator>
				<category><![CDATA[Progress]]></category>

		<guid isPermaLink="false">http://www.radian-lang.org/?p=640</guid>
		<description><![CDATA[I have added two new entries under Documentation: a writeup about the map object and another about the string object. These pages describe the syntax, list the methods and functions offered by the objects, and discuss the computational complexity of the available operations.
]]></description>
			<content:encoded><![CDATA[<p>I have added two new entries under <a href="/documentation/">Documentation</a>: a writeup about the <a href="documentation/map-object/">map object</a> and another about the <a href="/documentation/string-object/">string object</a>. These pages describe the syntax, list the methods and functions offered by the objects, and discuss the computational complexity of the available operations.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.radian-lang.org/2012/12/documentation-for-map-and-string-objects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Uniqueness and Reference Immutability for Safe Parallelism</title>
		<link>http://www.radian-lang.org/2012/12/622/</link>
		<comments>http://www.radian-lang.org/2012/12/622/#comments</comments>
		<pubDate>Tue, 04 Dec 2012 00:32:20 +0000</pubDate>
		<dc:creator>Mars</dc:creator>
				<category><![CDATA[Reference]]></category>

		<guid isPermaLink="false">http://www.radian-lang.org/?p=622</guid>
		<description><![CDATA[Interesting research from Microsoft on equipping compilers with information necessary to automatically parallelize code via reference immutability tagging:
A key challenge for concurrent programming is that side- effects (memory operations) in one thread can affect the be- havior of another thread. In this paper, we present a type sys- tem to restrict the updates to memory [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://research.microsoft.com/pubs/170528/msr-tr-2012-79.pdf">Interesting research from Microsoft</a> on equipping compilers with information necessary to automatically parallelize code via reference immutability tagging:</p>
<blockquote><p>A key challenge for concurrent programming is that side- effects (memory operations) in one thread can affect the be- havior of another thread. In this paper, we present a type sys- tem to restrict the updates to memory to prevent these unin- tended side-effects. We provide a novel combination of im- mutable and unique (isolated) types that ensures safe paral- lelism (race freedom and deterministic execution). The type system includes support for polymorphism over type quali- fiers, and can easily create cycles of immutable objects. Key to the system’s flexibility is the ability to recover immutable or externally unique references after violating uniqueness without any explicit alias tracking. </p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.radian-lang.org/2012/12/622/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Go at Google</title>
		<link>http://www.radian-lang.org/2012/10/go-at-google/</link>
		<comments>http://www.radian-lang.org/2012/10/go-at-google/#comments</comments>
		<pubDate>Sat, 27 Oct 2012 07:49:52 +0000</pubDate>
		<dc:creator>Mars</dc:creator>
				<category><![CDATA[Reference]]></category>

		<guid isPermaLink="false">http://www.radian-lang.org/?p=615</guid>
		<description><![CDATA[A slideshow by Rob Pike, one of the principal inventors of Go. I was surprised by the number of places I found myself nodding along in agreement, having independently arrived at similar opinions about the Way Things Ought To Be Done.
Go has definitely taken over a big piece of the ground I had originally intended [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://talks.golang.org/2012/splash.slide#1">A slideshow by Rob Pike</a>, one of the principal inventors of <a href="http://www.go-lang.org/">Go</a>. I was surprised by the number of places I found myself nodding along in agreement, having independently arrived at similar opinions about the Way Things Ought To Be Done.</p>
<p>Go has definitely taken over a big piece of the ground I had originally intended to cover with Radian, but I still think there&#8217;s room for a comparable language on the more dynamic / scripty end of the scale. Go is a tool for concurrent programming in the large, but there are lots of people who work in the terrain originally occupied by shell scripts and currently dominated by Python, Ruby, and to a decreasing degree Perl, and I think Radian has something to offer there. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.radian-lang.org/2012/10/go-at-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Changing the case of a string</title>
		<link>http://www.radian-lang.org/2012/10/changing-the-case-of-a-string/</link>
		<comments>http://www.radian-lang.org/2012/10/changing-the-case-of-a-string/#comments</comments>
		<pubDate>Sat, 27 Oct 2012 07:27:16 +0000</pubDate>
		<dc:creator>Mars</dc:creator>
				<category><![CDATA[Reference]]></category>

		<guid isPermaLink="false">http://www.radian-lang.org/?p=613</guid>
		<description><![CDATA[
Perl:  $low = lc $str; $hi = uc $str;
Python: low, hi = (str.lower(), str.upper())
Ruby: low, hi = str.downcase, str.upcase
Java: String low = str.toLowerCase(); String hi  = str.toUpperCase();
Go: var low, hi = strings.ToLower(str), strings.ToUpper(str)
C#/.NET: string low = str.ToLower(); string hi = str.ToUpper();

]]></description>
			<content:encoded><![CDATA[<ul>
<li>Perl:  <code>$low = lc $str; $hi = uc $str;</code></li>
<li>Python: <code>low, hi = (str.lower(), str.upper())</code></li>
<li>Ruby: <code>low, hi = str.downcase, str.upcase</code></li>
<li>Java: <code>String low = str.toLowerCase(); String hi  = str.toUpperCase();</code></li>
<li>Go: <code>var low, hi = strings.ToLower(str), strings.ToUpper(str)</code></li>
<li>C#/.NET: <code>string low = str.ToLower(); string hi = str.ToUpper();</code></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.radian-lang.org/2012/10/changing-the-case-of-a-string/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Change from &#8216;const&#8217; to &#8216;def&#8217;</title>
		<link>http://www.radian-lang.org/2012/10/change-from-const-to-def/</link>
		<comments>http://www.radian-lang.org/2012/10/change-from-const-to-def/#comments</comments>
		<pubDate>Thu, 25 Oct 2012 15:25:08 +0000</pubDate>
		<dc:creator>Mars</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Progress]]></category>
		<category><![CDATA[Syntax]]></category>

		<guid isPermaLink="false">http://www.radian-lang.org/?p=610</guid>
		<description><![CDATA[Radian offers two simple symbol types: var lets you define a symbol to which you can later assign a new value, while const is a definition which cannot later be changed. I had expected to make heavy use of const in Radian code since it echoes a pattern I use frequently in C or C++, [...]]]></description>
			<content:encoded><![CDATA[<p>Radian offers two simple symbol types: <code>var</code> lets you define a symbol to which you can later assign a new value, while <code>const</code> is a definition which cannot later be changed. I had expected to make heavy use of <code>const</code> in Radian code since it echoes a pattern I use frequently in C or C++, but in practice I&#8217;ve found myself shying away from it. The reason is entirely superficial: it doesn&#8217;t <i>feel</i> right, because the values I would be assigning just aren&#8217;t constants. Instead, most of the <code>const</code>s I would define are intermediate values &#8211; things that will change on every invocation of the function or every pass through the loop, but which can remain unchanged once I&#8217;ve defined them. As such it just feels weird to call them constants, and so I tend to define them as <code>var</code> even if I have no intention of ever redefining them.</p>
<p>I still think that <code>const</code> has a good place; in fact I think that using it heavily is good style. I&#8217;ve decided therefore to rename it. Stealing a keyword from Python, &#8220;constants&#8221; are now &#8220;definitions&#8221;, using the keyword <code>def</code>. I&#8217;d avoided <code>def</code> since Python uses it for function definitions, specifically, while Radian functions use <code>function</code>, but sometimes one&#8217;s nice clean abstract ideas don&#8217;t pan out in practice. </p>
<p>It&#8217;s about time to freeze the syntax for a while. Aside from the half-finished regex literals, which are actually present in 0.6, I don&#8217;t see any further syntax changes on the horizon. All the upcoming work is in libraries and the toolchain.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.radian-lang.org/2012/10/change-from-const-to-def/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Release 0.6.0</title>
		<link>http://www.radian-lang.org/2012/10/release-0-6-0/</link>
		<comments>http://www.radian-lang.org/2012/10/release-0-6-0/#comments</comments>
		<pubDate>Wed, 10 Oct 2012 18:36:47 +0000</pubDate>
		<dc:creator>Mars</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.radian-lang.org/?p=608</guid>
		<description><![CDATA[A new version of Radian is available for download. Changes since 0.5.0:

No longer handles sync expressions in the &#8216;predicate&#8217; term of a list comprehension improperly; this could have led to a compiler crash.
Former IO object method read_file has been moved to the file module and renamed read_bytes, since its job is to read the file [...]]]></description>
			<content:encoded><![CDATA[<p>A new version of Radian is <a href="/download/">available for download</a>. Changes since 0.5.0:</p>
<ul>
<li>No longer handles <code>sync</code> expressions in the &#8216;predicate&#8217; term of a list comprehension improperly; this could have led to a compiler crash.</li>
<li>Former IO object method <code>read_file</code> has been moved to the <code>file</code> module and renamed <code>read_bytes</code>, since its job is to read the file in as a byte buffer. There is no longer a filespec object to provide as a parameter &#8211; just use a path string to identify the file.</li>
<li><code>ffi.load_external</code> function no longer requires its arguments to be string literals; it will now accept any string for the file path or function name.</li>
<li><code>sync</code> expression no longer returns incorrect value; it had been returning the last IO action applied instead of the result of that action.</li>
<li>Concatenating a string onto a string literal no longer fails when the right-hand string is not also a string literal; it had been raising an assertion.</li>
<li>Text encoding objects live in a new <code>encoding</code> library; encodings convert strings to and from byte streams. Encodings currently offered are ASCII, UTF-8, and UTF-16 in its big- and little-endian variants.</li>
<li>FFI library no longer includes specific types for each supported string encoding: instead, there&#8217;s a single <code>ffi.string</code> object which accepts a parameter specifying the text encoding to use.</li>
<li><code>file.read_string</code> is a new function which reads a whole file in as a string; you specify the file path and the text encoding to use.</li>
<li><code>string.length</code> function computes the number of codepoints in a string.</li>
<li><code>string.from_codepoint</code> function creates a single-character string from an integer codepoint value</li>
<li>Line continuation after binops will now work outside of a function or other indented block; it used to fail when used on a root-level statement.</li>
<li>String concatenation algorithmic complexity is now amortized O(log N) on the length of the composite string; it was previously O(n). Iteration time per character is still approximately constant.</li>
<li><code>string.is_empty</code> function returns true if the string contains no characters.</li>
<li><code>string.split_lines</code> function breaks a single string into a sequence of lines, separated by linebreak; the function accepts any of LF, CRLF, or CR as valid line breaks. An empty file will produce an empty sequence, but characters left on the end of the file with no trailing linebreak will be returned as their own line.</li>
<li><code>sequence.take</code> function accepts a sequence and a number of elements, then returns the first N elements of the sequence, or the whole sequence if it has N or fewer elements. Corresponding <code>string.take</code> function returns the first N characters of a string.</li>
<li><code>sequence.drop</code> function accepts a sequence and a number of elements, skips the first N elements of the sequence, then returns the remaining sequence. A corresponding <code>string.drop</code> function does the same job for characters in a string.</li>
<li><code>sequence.singleton(X)</code> function returns a one-element sequence consisting of the specified value <code>X</code>. </li>
<li><code>sequence.replicate(X, N)</code> function returns a sequence <code>N</code> elements long where every value is equal to the specified <code>X</code>.</li>
<li><code>sequence.length(seq)</code> counts the number of elements in the sequence.</li>
<li><code>assert</code> statement evaluation is no longer deferred til after a sync: if the assert fails, the sync will return an appropriate exception instead of a meaningless value.</li>
<li><code>string.slice(str, begin, length)</code> returns a substring of length no greater than the specified number of characters beginning at the specified number of  chars after the beginning of the argument string. If <code>begin</code> is equal to or greater than the length of the string, <code>slice</code> will return an empty string.</li>
<li><code>string.replicate(str, count)</code> creates a string by repeating the argument a specified number of times. If the count is zero or the string is empty, <code>replicate</code> will return an empty string.</li>
<li><code>set.union(a, b)</code>, <code>set.intersection(a, b)</code>, and <code>set.difference(a, b)</code> implement three of the four basic set operators. (It remains to be seen whether there is a practical implementation for complement).</li>
<li>new <code>queue</code> module implements a queue data structure: <code>append</code> items to the tail of the queue, then <code>pop</code> them from the <code>head</code>. The queue object also implements the <code>sequence</code> interface, so you can also <code>iterate</code> over a queue instead of using <code>head</code>/<code>pop</code>.</li>
<li><code>io.write_file</code> function moved to <code>file</code> module and renamed <code>file.write_bytes</code>. A related <code>file.write_string</code> accepts an encoding parameter, allowing you to write a string out as a text file.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.radian-lang.org/2012/10/release-0-6-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>File reading API</title>
		<link>http://www.radian-lang.org/2012/09/file-reading-api/</link>
		<comments>http://www.radian-lang.org/2012/09/file-reading-api/#comments</comments>
		<pubDate>Fri, 28 Sep 2012 04:17:17 +0000</pubDate>
		<dc:creator>Mars</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Progress]]></category>

		<guid isPermaLink="false">http://www.radian-lang.org/?p=601</guid>
		<description><![CDATA[The regex system is turning out to be a larger project than I had anticipated. It&#8217;s still important, but as the length of time it appears likely to consume continues to grow, its immediate priority is dropping. I&#8217;m still working on it, but I&#8217;m not going to let it delay the long list of smaller [...]]]></description>
			<content:encoded><![CDATA[<p>The regex system is turning out to be a larger project than I had anticipated. It&#8217;s still important, but as the length of time it appears likely to consume continues to grow, its immediate priority is dropping. I&#8217;m still working on it, but I&#8217;m not going to let it delay the long list of smaller pieces of functionality impeding other use-cases.</p>
<p>I am continuing to move away from the original monadic IO system. The latest change is the file-input mechanism: the function that used to be <code>io.read_file</code> is now <code>file.read_bytes</code>. I want it to be clear that the result of this function is a byte buffer, not a string. The buffer object implements the sequence interface, so if I just called it <code>file.read</code> an unobservant ASCII-using programmer might be able to get disturbingly far along without noticing that what they&#8217;d read was not actually text, and had not been decoded from its byte form, but merely a string of bytes. By naming the function <code>read_bytes</code> I hope to plant a seed of puzzlement which will lead the programmer to its eventual sibling, <code>read_string</code>, which will require you to specify the encoding of the text file you are reading.</p>
<p>Another change is the elimination of the filespec object. I&#8217;d intended to use an abstract mechanism for describing a file, but it&#8217;s ultimately nothing but a thin wrapper around a path string. Since every platform I care about uses path strings to identify files, I&#8217;ve decided to drop the wrapper. Perhaps there will eventually be a module in the library which implements platform-localized transformations on path strings.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.radian-lang.org/2012/09/file-reading-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Release 0.5.0</title>
		<link>http://www.radian-lang.org/2012/09/release-0-5-0/</link>
		<comments>http://www.radian-lang.org/2012/09/release-0-5-0/#comments</comments>
		<pubDate>Mon, 10 Sep 2012 04:55:55 +0000</pubDate>
		<dc:creator>Mars</dc:creator>
				<category><![CDATA[Progress]]></category>

		<guid isPermaLink="false">http://www.radian-lang.org/?p=595</guid>
		<description><![CDATA[A new version of Radian is available for download. Changes since 0.4.0:

--dump switch now supports llvm option, producing LLVM IR as output.
IO system rewritten to use asynchronous tasks. IO methods no longer mutate the implicit IO object, but simply return asynchronous task objects which you can then sync to execute. It is no longer necessary [...]]]></description>
			<content:encoded><![CDATA[<p>A new version of Radian is <a href="/download/">available for download</a>. Changes since 0.4.0:</p>
<ul>
<li><code>--dump</code> switch now supports <code>llvm</code> option, producing LLVM IR as output.</li>
<li>IO system rewritten to use asynchronous tasks. IO methods no longer mutate the implicit IO object, but simply return asynchronous task objects which you can then <code>sync</code> to execute. It is no longer necessary to pass in a separate callback expression; the program will continue when task execution completes.</li>
<li>Former IO object methods <code>load_external</code>, <code>describe_function</code>, and <code>call</code> have been moved to the <code>FFI</code> (&#8221;foreign function interface&#8221;) module.</li>
<li>Number type predicates have been renamed from <code>number?</code> to <code>is_number</code>, <code>integer?</code> to <code>is_integer</code>, and <code>rational?</code> to <code>is_rational</code>.</li>
<li>All <code>type?</code> functions in the standard library have been renamed to <code>type</code>.</li>
<li>Question marks are no longer allowed as identifier and symbol suffixes. The<br />
category &#8220;suffix character&#8221; no longer exists. An identifier may begin with any<br />
character in the Unicode category XID_Start, or an underscore, and may continue<br />
with any number of characters in the Unicode category XID_Continue.</li>
<li>Methods of built-in objects check the number of incoming arguments and report an exception when there are too many or too few. Previous behavior was undefined.</li>
<li>List member indexed lookup no longer dies with strange &#8220;member not found&#8221; exception after the list grows larger than 8 items.</li>
<li>A list, once reversed, can now concatenate another list without throwing an &#8220;unimplemented&#8221; exception.</li>
<li>Number module now offers a <code>range_with_step</code> function, accepting parameters min, max, and step. Like the normal <code>range</code> function, this counts from min to max. If step is positive, it continues while current <= max; if step is negative, the sequence continues while current >= max.</li>
<li><code>sync</code> operator no longer needs to be the root of its expression: you can now use the result of the sync in a compound expression involving other values, other function calls, and even other syncs. Expressions are processed in deepest-to-shallowest, left-to-right order, and syncs are currently the only expression operator which can cause an observable side-effect.</li>
<li>No longer fails to include line number and position when reporting errors<br />
with parameter definitions.</li>
<li>Functions inside a module no longer refer to the module as <code>self</code>; instead they refer to it using the module&#8217;s name, derived from its file name, just as other files which import that module would do.</li>
<li><code>set</code> object in the library no longer returns an exception when you try to add an element: that is, the <code>set</code> object will now actualy work as a set container.</li>
<li>No longer accepts linebreak characters inside a string literal: that is now an error, as it should have been all along.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.radian-lang.org/2012/09/release-0-5-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
