-
Notifications
You must be signed in to change notification settings - Fork 1
/
CHANGELOG.txt
152 lines (124 loc) · 6.27 KB
/
CHANGELOG.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
Alore ChangeLog
===============
0.7.0 (October 2011)
* This release adds optional typing as the main new feature.
* This is arguably the single biggest change to Alore since its inception.
* This has several related changes. Some changes require changes to existing
programs (see below).
* As things will break anyway, a general library spring-clean was also
performed.
* The previous release only hinted at optional typing (it was basically
undocumented, and there was no type checker).
* Primary changes related to optional typing:
* Add optional typing and a type checker (run with "alore -c" or
"alore -t"). See the documentation for the whole story.
* Add documentation for optional typing.
* Add type signatures to library reference.
* New syntax for casts and type declarations (the "as" keyword).
* Disallow "bind" in interfaces with a superinterface.
* This would basically break modular type checking.
* Cannot access "self" via self in the class definition.
* This would compromise the type system, as create can be overriden with
an incompatible type.
* Redesign the encodings module to better support optional typing. See
the library reference for details.
* Also affects the io module and the Str class.
* thread::Thread constructor accepts only a single argument (a function
with no arguments).
* Simplify type::Time calling convention so that it can be more conveniently
typed.
* Make class pack::PackerBase public.
* Support single-quoted string literals ('foo') in addition to double-quoted.
* Additional changes that may cause breakage (many of these improve the
convenience of common tasks):
* Rename the reflection module to reflect.
* Rename os::JoinPath to Join.
* Rename os::DirSeparator to Separator.
* Stream read() now closes the stream, similar to readLines().
* Rename cgi::HtmlEncode to Html.
* Rename cgi::HtmlEncodeQuotes to HtmlQuot.
* Value of sys::Platform is now "mac" in Mac OS X (it was "osx").
* Do not automatically expand wildcards in command line arguments in
Windows.
* Map objects raise KeyError instead of IndexError if the key is missing.
* std::Repr('foo') returns "'foo'" instead of '"foo"'.
* New library features:
* Add errno module. IoError exceptions now usually contain a symbolic
description of the error.
* Add debugging facilities (std::Print and std::TypeName).
* Add std::Reversed.
* Add std::KeyError.
* Add Str encode and decode methods.
* Add Array extend and remove methods.
* Add constructor Array(iterable).
* Add Map get and items methods.
* Add Type interfaces method.
* std::Exception constructor accepts a nil message.
* time::Time objects have nanosecond precision (previously microsecond).
* Add Time toSeconds() and toNanoSeconds() methods.
* Add re::FindAll.
* Add several features to os module (MakeDirs, MakeSymLink, ReadSymLink,
NormPath, AbsPath, ExpandUser, AltSeparator).
* Add optional default argument to os::GetEnv.
* os::SetPerm and os::Stat support group permissions (in Unix-like operating
systems).
* Deprecated library features:
* Deprecate functions Encode and Decode in encodings (use Str encode
and decode methods instead).
* Deprecate Array find method.
* Deprecate Float(time) for time::Time objects (use toSeconds() instead).
* Deprecate re::MatchResult span member (use start and stop instead).
* Other changes:
* Significantly improve exception error messages. This is a huge help when
debugging.
* Add a Windows installer/uninstaller.
* Add several complete example programs under demo/, some of which use
optional typing.
* Change documentation formatting.
* Also add syntax highlighting to code fragments.
* Simplify the format of stack traces.
* Fix many bugs (too many to list here).
* Support files larger than 4 GB properly.
* Improve and clarify documentation in many places.
* Switch from svn to git and publish the git repository at github
(https://github.com/JukkaL/alore).
* Add issue tracker, wiki and mailing list.
0.6.0 (January 2011)
* Use "def" keyword instead "sub" to define functions.
"sub" is still supported as an alternative for compatibility with
earlier Alore versions, but it will be dropped in a future Alore
release. This may break existing programs that use "def" as an
identifier.
* Renamed the C API macros A_SUB* to A_DEF*. Existing C modules have to
be updated.
* Added the std::Tuple type.
The expression e1, ..., eN now constructs a Tuple object instead of an
Array. This may break existing programs. To preserve existing
behavior, surround all Array expressions with square brackets.
* Added several features in preparation for the upcoming optional type
system.
These are of limited use in dynamically-typed programs. Some existing
programs may be broken due to the addition of new keywords.
The documentation of these new features is still incomplete.
* Added interfaces and bind declarations.
* Added cast expressions, including the dynamic cast expression.
* Added std::CastError.
* Accept and ignore optional type annotations in the parser without
parsing or validating them.
* Added 4 new keywords: "interface", "implements", "bind" and
"dynamic".
* The ":" token is used for both Pair expressions and for delimiting
type annotations. Pair expression must be within parentheses or
square brackets to disambiguate them from type annotations.
* The lexer and parser process ">" tokens slightly differently. This
should not affect valid existing programs.
* Added the C API macros A_INTERFACE, A_END_INTERFACE and A_IMPLEMENTS
for defining and implementing interfaces.
* Added interfaces std::Iterable, std::Iterator, std::Sequence,
std::Comparable, std::Addable and std::Multipliable. Several
standard library types implement some of these.
* Made re::MatchResult public so that it can be referred to in type
declarations.
* Fixed a few parser bugs.
0.5.0 (October 2010)
* First Alore release with public availability.