Releases: orc-lang/orc
Orc release 2.1.2 (Tue, 30 May 2017)
Orc 2.1.2 is an update of the Orc implementation. This release makes no language changes. The release updates Orc's major dependencies:
- Scala (2.12) (necessary JARs are bundled with this release)
- Java SE (8)
Also, the Orc Eclipse plug-in is updated to be fully Eclipse Neon 4.6 compatible, and no longer uses the now-defunct Eclipse IMP runtime.
This release requires Java SE 8.
See our Downloads page for detailed instructions on how to download and use Orc within Eclipse, locally within your Web browser, or from the command line.
Added:
- Orc Eclipse plug-in functions to replace services formerly provided by the IMP runtime.
Modified:
- Updated Java SE dependency to version 1.8.
- Updated Scala dependency to version 2.12.2. The necessary Scala JARs are bundled with this release.
- Compile diagnostics highlight a range of source code, rather than a single character.
Removed:
- The
GoogleCalendar
site is obsolete, and has been removed. - Removed the IMP runtime from the Orc Eclipse plug-in.
OrcO Preview Package
This version and package are the preview build which can run examples presented in our OOPSLA 2016 paper:
OrcO: A Concurrency-First Approach to Objects (http://2016.splashcon.org/event/splash-2016-oopsla-orco-a-concurrency-first-approach-to-objects, http://dx.doi.org/10.1145/2983990.2984022).
The paper examples are in OrcExamples/orco_paper in the repository and examples/orco_paper in the attached package.
A preprint PDF of the paper is also attached to this release.
Orc release 2.1.1 (Thu, 07 Jan 2016)
Orc 2.1.1 is an update of the Orc implementation. This release makes no language changes. The release does improve the Orc Eclipse plug-in and extends the standard library slightly. In addition, significant work has gone into improving the underlying implementation.
See our Downloads page for detailed instructions on how to download and use Orc within Eclipse, locally within your Web browser, or from the command line.
Added:
- Add ObservationSubject to the standard library.
Modified:
- Improved compiler errors and warning messages.
- Updated Scala dependency to 2.11.7.
- Updated Eclipse plug-in version requirement to Eclipse 3.6.0.
- Improved Orc program launching in Eclipse, including a bug fix for Eclipse Mars (4.5).
- Internal changes to enable multiple backends. The default backend is unchanged.
Removed:
- Orc project automatically build in Eclipse.
Orc release 2.1.0 (Sat, 21 Sep 2013)
Orc 2.1 is a new revision of the Orc implementation. This release is backward compatible with all Orc 2.0 programs, however it does have a few language improvements and extensions. In addition, significant work has gone into improving the underlying implementation.
See our Downloads page for detailed instructions on how to download and use Orc within Eclipse, locally within your Web browser, or from the command line.
Added
- Support for virtual clocks.
- Optional declaration-expression separator "
#
" added that disambiguates the end of a declaration. InvokeExecutable
class in the standard library allows Orc to spawn OS processes.- Sites added to the standard library:
zipWith
,listToJavaList
,listToArray
. - Support for Unicode escapes in Orc strings.
Modified
- Updated Scala dependency to 2.10.
- Fix blocking on strict site call arguments; if any argument halts the entire call will halt regardless of the state of other arguments.
- Improved runtime error messages.
- Documentation of the Orc standard library has been expanded and improved.
Orc release 2.0.2 (Thu, 12 May 2011)
A minor bug fix in include statement handling.
See our Downloads page for detailed instructions on how to download and use Orc within Eclipse, locally within your Web browser, or from the command line.
Orc release 2.0.1 (Wed, 27 Apr 2011)
Bug fixes in the scheduler and string formatting.
See our Downloads page for detailed instructions on how to download and use Orc within Eclipse, locally within your Web browser, or from the command line.
Orc release 2.0.0 (Thu, 21 Apr 2011)
Orc 2.0 is a new major revision of the Orc implementation. The core codebase has been rewritten in Scala, and the internal structure of the compiler and runtime have been altered and improved substantially.
The user-level surface language has also changed. Orc 2.0 is not backwards-compatible with previous versions of Orc. Here are the detailed release notes on the user-visible changes to the language. Guidance on how to modify programs written in the previous version of Orc to make them run under Orc 2.0 is on the UpgradingYourProgramToOrc2.0 wiki page.
See our Downloads page for detailed instructions on how to download and use Orc within Eclipse, locally within your web browser, or from the command line.
Added
- Support for records: record expressions, record types, record patterns, and record extension using
+
- Function clauses may have arbitrary guard conditions.
- New
web
library section, with sitesBrowse
,HTTP
,ReadJSON
, andWriteJSON
- New
xml
library section, with XML manipulation sites. - Enhanced parse error messages.
- Enhanced compiler and runtime error messages, with links into the Orc Wiki.
- The
.oil
compiled representation of Orc programs now has a standard public format, given byorc.csres.utexas.edu/oil.xsd
. - Orc compiler and runtime support JSR 223.
- Orc 2.0 has a full Reference Manual.
- Added site
IterableToStream
to convert Java objects implementingIterable
to a more Orc-appropriate idiom. - Any value with an
apply
member can be called; the call is forwarded to theapply
member. - Any value with an
unapply
member can be used in a call pattern; the match target is forwarded to theunapply
member.
Modified
def capsule
is nowdef class
.site
is nowimport site
.class
is nowimport class
.type
is nowimport type
for external types. Type aliases and datatypes remain unchanged.- The three
import
declarations require the Java class name to be a quoted string. - The comparison operators
<
and>
are now<:
and:>
. if
site is nowIft
.Ift
has a counterpart,Iff
.IArray
is nowTable
.Rtimer
is nowRwait
.Buffer
is nowChannel
.BoundedBuffer
is nowBoundedChannel
.- "Nonblocking" sites, with the suffix '
nb
', are now "definite" sites, with the suffix 'D
'. - Site names are now capitalized by convention. This has changed many sites in the standard library:
Let
,Print
,Println
,Error
,Read
,Write
,Floor
,Ceil
,Random
,URandom
. - Keywords are reserved. (Previously one could, for example, define a function named "stop".)
- Orc identifiers may now use Unicode letters.
- Fixed bugs in
Floor
andCeil
. - Arrays no longer have any methods. They have one field,
length
. Forslice
, use the new functionsliceArray
. - Arrays no longer pattern match as lists. Use
arrayToList
. - Descendants of
Iterable
no longer pattern match as lists. UseiterableToList
. - All Orc programs and includes are interpreted using the UTF-8 character encoding.
Removed
- Tracing facilities have been removed.
- Experimental support for Orc exception handling syntax has been removed.
- Special treatment of interaction between
if then else
and>>
in parser has been removed. if then
withoutelse
is no longer supported. Always useif then else
.- Equality (
=x
) pattern is gone. Use a guard on the clause instead. - Special treatment of newlines has been removed. Ambiguous syntax can be eliminated with the insertion of
signal >>
. - Curried definition of functions, lambdas, and function types are no longer allowed. Expand these explicitly as chained lambdas instead.
Record
has been removed; use primitive records instead.Set
andMap
have been removed; use Scala or Java counterparts instead.cat
has been removed, use+
on strings instead.Clock
has been removed, useRclock
instead.Ltimer
andwithLtimer
have been removed.Apply
has been removed.Thread
has been removed.()
as a synonym forsignal
has been removed.- All uses of and dependencies on Kilim have been removed.
Orc release 1.1.0 (Fri, 05 Mar 2010)
See our Downloads page for detailed instructions on how to download and use Orc within Eclipse, locally within your web browser, or from the command line.
This release is backwards compatible with Orc 1.0. Any Orc program that runs under Orc 1.0 with no command line switches will also run under Orc 1.1, with the same behavior.
Major updates:
- The Orc implementation has been updated to Java 6, since Java 5 is now deprecated.
- The execution model for Orc programs has changed substantially. The compiler no longer generates a directed acyclic graph from the OIL abstract syntax tree; instead it executes directly on that syntax tree.
- A new definition,
capsule
, is now available. Orc capsules provides this facility for programmer to define active objects in Orc. The creation and execution of capsule is protected from the execution and termination of the rest of the program.capsule
is documented in the user guide. - A new site,
Site
, is now available. It takes a single argument, which must be a closure, and returns a site which, when called, executes that closure as if it were a site.
Minor updates:
- URLs may be used in include declarations. This is especially helpful when using a web-based interface, as it allows access to include files hosted on another server.
- Unused function definitions are now trimmed from the program AST during compilation; this substantially decreases compile time and sometimes improves performance as well.
- There is a new
-noexecute
switch which suppresses execution of a program, performing only compilation. Typically this is used in concert with-typecheck
or-oilOut
. - The
Top
type is now interchangeable withjava.lang.Object
; this is a minor weakening of the type theory, but in practice it is useful and causes no problems. - The
signal
value now has a unique type,Signal
. This is analogous to the unit type in typed functional languages such as ML. - Calls to the
Record
site which use string literals for field names are now statically typable. - Type parameters may now be written inline in defs and lambdas.
- The experimental
isolated
keyword has been removed entirely. Its functionality is mostly subsumed by theSite
site. - The stub code for the
atomic
combinator has been removed entirely. A full implementation ofatomic
will be added to a future release of Orc. - The OAuth protocol used in OrcSites and Orchard has been updated to protocol version 1.0a.
- In the Orc Eclipse plug-in:
- The outline view distinguishes between function definition clauses and function signatures.
- The New Orc file wizard is improved.
- Orc program run configurations now have an Alternative Orc Runtime Engine tab, to allow programs to run with an Orc Runtime Engine other than the built-in one. This permits experimenting with, and debugging of, the Orc language runtime.
- If not specified, the working directory of a program is now the directory containing the program.
- JavaSE 6 (or newer) is now required.
- The Orchard WAR/JAR bundling has been completely re-worked: now orchard.war bundles only Orc-specific JARS in its lib; "common" JARs, such as JAX-WS are external.
- The Orchard "try Orc" demo has much friendlier error handling.
Orc release 1.0.0 (Wed, 09 Sep 2009)
This is our first major release.
Major updates:
- There is now an Eclipse plugin for Orc, compatible with Eclipse versions 3.3 and later. It is available from the Downloads page. Thanks go to John Thywissen for his hard work in creating this plugin.
- We have introduced experimental support for exception handling. Exceptions are documented in the user guide. Thanks go to Andrew Matsuoka for his hard work in designing and implementing this feature.
- The static typechecker is now a permanent language feature. It is no longer experimental, though it is still optional to use. It is documented in the user guide.
Minor updates:
- The
isolated
keyword, which creates isolated actors, is now disabled by default; use-allowIsolated
to enable it. - Parser error reporting has only slightly improved; in particular, the parser will clearly report when an Orc program has no goal expression.
- Relative paths in
include
are now relative to the file that contains the declaration, rather than an Eclipse workspace or some system default. The-I
switch still works as before. - There is now an equality pattern,
=x
, which matches against the value bound tox
, rather than binding a value tox
. - The AST classes within the compiler have been significantly refactored to improve readability.
Orc release 0.9.8 (Sun, 12 Apr 2009)
v0.9.8 Update documentation so it doesn't refer to sourceforge or CVS. Get r…