/
ChangeLog
430 lines (426 loc) · 20.8 KB
/
ChangeLog
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
v0.8.0 (Aug 29, 2012)
----------------------
- Cleanup method definition bytecode generation.
- relocating some bootstrap code
- ignore Exceptions raised in ensure_block in Object#let:be:in:ensuring:
- rename Object#dclone -> Object#dup for consistency with other classes implementing dup
- fix Hash#to_hash_deep and add tests
- add Hash#to_hash_deep
- add optional ensure_block parameter to Object#let:be:in:
- add File##append:with:
- add NilClass#to_hash
- add Object#_
- add support for passing blocks to Class#private:, Class#protected: & Class#public:
- fix formatting in lib/fdoc.fy
- fix docstrings for Fancy::Package::Installer
- simplify Fancy::Package::Installer#latest_tag
- remove ::
- Pass correct arguments to Fancy::Package##install:version: when installing package dependencies.
- fix errors with package installation when no git tags are available for versions.
- add support for toplevel constants via ::ConstName
- use to_sym instead of to_sym()
- Fix docstring indentation
- Moved proxy classes into Proxies namespace.
- Add DistributingProxy
- Add Regexp#call:
- Add instance_variable_get / instance_variable_set to ruby_aliases in Object
- Use __send__ in boot/fancy_ext/class.rb
- add StandardError##raise:
- cleanup examples/ dir
- delete symlinks to bin-files when uninstalling a package
- use alias_method:for_ruby: in Regexp
- rafactoring, add Class#remove_slot_accessors_for:
- add newline
- check if documentation available before calculating CompiledMethod#definition_line
- add link to dev blog
- Fix referenced method names.
- Print out invalid method names referenced by test cases in spec. Also print all errors to *stderr*.
- Add String#to_fancy_message & Symbol#to_fancy_message
- Add Class#has_method?:
- Add Class#rebind_instance_method:with:within:receiver: and Object#rebind_method:with:within:
- Add ruby alias for UnboundMethod#bind:
- Allow non-Block arguments to Class#define_method:with:
- Add docstrings to StringIO
- cleanup code with empty methods
- require lib/stringio in tests/stringio.fy
- simplify Stack#pop
- add String#main? & String#if_main:else:
- add System##aborting:do:
- use OptionParser in bin/fspec
- fix typo
- small cleanup
- Use new Binding#constant_scope (was renamed from static_scope a while ago in Rubinius).
- make sure dynvars always start & end with '*'
- use receiver methods instead of its class' instance methods in ifancy
- fix docstring for Hash#call:
- Add Hash#call: and Hash#to_block
- Make Specification#package_name a writable slot
- rename remaining Fancy::Packge::Specification#rubygem_dependencies sends
- rename rubygem_dependencies -> ruby_dependencies in Fancy::Package::Specification
- small cleanup
- fix Integer#times_try:retry_with:
- make sure finally block gets run even when raising an exception within a catch block
- some cleanup to try/catch/finally blocks in Object
- Catch StandardError instead of Object when no exception class defined for catch block
- add testcase to tests/exception.fy
- cleanup in CodeLoader
- just use call_on_instance in Block#call_with_receiver:
- some fixes to try/catch/finally bytecode generation
- Cleanup lib/parser/methods.fy
- Add String#to_i:
- Support Block arguments passed to Array#index:
- Code cleanup in compiler code
- Add docstring for File##read_binary:
- Fix whitespace.
- fix FancySpec docstrings and make sure to generate documentation for FancySpec in fdoc
- fix FalseClass docstrings
- add docstring to Fancy##eval:binding:file:line:
- Improve / Add docstrings
- cleanup old code
- Add example for -github-repo option in fdoc
- fix spacing
- Add Object#ignoring:do:
- Add Matchers module with MatchAny and MatchAll matchers.
- Add Class#expose_to_ruby:as:
- Add doctoring to Class#class_eval:
- Add Fancy::Enumerable#join_by:
- Add Fancy::Enumerable#rest
- Simplify Array#each:
- Handle Fancy::NextIteration in Tuple#each:
- Add support to fdoc for custom github-links via -github-repo option.
- Add github octocat icon to doc/api/ and always show it on fdoc generated page.
- Rewrote bin/fdoc as a simple fancy script and put all logic in lib/fdoc.fy.
- Fix issue in CompiledMethod#definition_line
- Fix docstring for Fancy::Package::Installer
- Fix Package installer to use new Github API (v3). Fixes #68
- Use File#delete!: in Package uninstaller
- Add File#delete!:
- Fix docstring for Directory#list:
- remove unnecessary parens
- Small doctstring tweak for Block#*
- FDoc: Allow multiple code blocks in docstrings.
- Add Block#*
- Fix Array##new:with: docstring
- FDoc: align argument descriptions in generated html nicely
- Improve Array method docstrings
- fix Symbol docstrings
- fix typo in docstring
- Fix FDoc html generation for code examples.
- Fix doctstrings for Integer methods
- Fix StringInterpolation with __FILE__
- Improve FDoc documentation generator tool.
- Add File##absolute_path: (alias for File##expand_path:)
- Improve __FILE__ special string compilation
- add Hash#reject_keys:
- Add remove_after_parsed option to OptionParser.
- Sort by option name when printing --help info in OptionParser
- add String#multiline?
- fix CompiledMethod#definition_line for non-multiline docstrings
- Add CompiledMethod#definition_line & CompiledMethod#last_line and use that in fdoc
- Fix UnboundMethod#selector_with_args for [] and []: methods.
- Fix Class#class_eval: for String arguments
- Add before/after/around methods & blocks to classes.
- add UnboundMethod#call: and Method#call:
- only print banner in OptionParser if any given
- add OptionParser class
- Add Enumerable#grep: & Enumerable#grep:taking:
- add Integer#decimals
- Small cleanups in lib/rbx/debugger
- Add initial version of debugger support
- Allow 1-arg blocks passed to Object#do:
- moved Class#ruby_methods and Class#fancy_methods into Object
- fix docstring for Class#new & Class#new:
- add alias Class#expects_interface:
- rename contracts error class
- Add contracts / runtime enforceable interface definitions.
- add assertion to String#[] test
- use each_with_index: in Fancy::Enumerable#at:
- fix require in package uninstaller
- fix error location output in FancySpec
- Make Directory class an alias for Ruby's Dir class.
- close opened source files
- catch StandardError instead of Exception
- simplify handling of string interpolation in parser
- forward unary methods in MatchData and Regexp#match:
- add Hash#random, Hash#random_key & Hash#random_value
- fix typo in Fancy::Enumerable#take: docstring
- Add Fancy::Enumerable#first: and Fancy::Enumerable#last:
- Add Fancy::Enumerable#split_with: and Fancy::Enumerable#split_at:
- Merge branch 'master' of github.com:bakkdoor/fancy
- use includes?:
- use includes?:
- fix spacing
- Add Fancy::Enumerable#sorted?
- Add ruby_alias for '<=, '>=, '<=> on String.
- fix docstring for Hash#select_keys:
- Add more Class methods
- Add Hash#select_keys:
- update README
- fix code indentation in README
- Clean up README
- some fdoc & docstring fixes
- fix Enumerable#in_groups_of: when passed size <= 0
v0.7.0 (May 05, 2012)
----------------------
- ignore TAGS
- Moved FANCY_VERSION to Fancy::VERSION and bumped it to 0.7.0
- added Array#-
- some refactoring to Fancy Package classes
- updated fancy --help output (added list-packages option)
- Implemented Fancy Package Uninstaller and refactored parts of Installer out into Package Handler class.
- fixed method name in test
- added Class#instance_methods: and Class#methods:
- added support for installing/symlinking bin_files in package system
- added Fakefile list of auto-mode-alist for fancy-mode
- push NilLiteral in empty singleton method definition
- Added link to new twitter profile in README
- removed another .fy extension in lib/boot.fy
- omit .fy ending in lib/boot.fy
- added DynamicValueArray test
- added DynamicKeyHash test
- added tests for DynamicSlotObject
- set slot reader/writers in DynamicSlotObject#object itself
- added docstrings for DynamicKeyHash, DynamicSlotObject & DynamicValueArray
- more cleanups in Enumerable
- fixed docstring typo and default arg value for Enumerable#superior_by:taking:
- renamed Enumerable#uniq => Enumerable#unique
- added travis build status image to readme
- added notifications back to .travis.yml
- added -d option to fspec and also sort test files by name
- moved random into Number mixin
- remove rbx-2.0.0pre rvm option
- small fix to .travis.yml
- updated .travis.yml
- fixed String class docstring
- a bunch of Enumerable related refactorings, also added common to_s method and other improvements
- added Enumerable#count:
- added unless:then:else: alias for unless:do:else:
- simplify example and testcase
- Return superclass, if any, as well in Class#inspect
- added File##read_config:
- added ActorProxy class
- print amount of files compiled for fancy -c option
- added retry_with: parameter to Integer#times_try:retry_with:
- simplified stupid quicksort example
- updated copyright notice in README
- Refactored Object#message_name: into Symbol#message_name and String#message_name.
- Hash cleanup
- Added Class#lazy_slot:value:
- added File##eval:
- Added File##read_binary:with: and File##read_binary:
- Default to reading binary in File##open:
- Added IO#read: alias
- Fixed define_forward_method_missing call in compiler by adding missing pop instruction at the end
- make some class methods public
- fix set test: don't rely on ordering of values in set
- fix typo
- added Integer#times_try:
- fixed bootstrap bug
- added Module#[]: for setting constants within modules and classes
- some cleanups to Enumerable class
- added get_slot: and set_slot:value: in Hash
- added Alias for Fixnum#^ (bitwise xor)
- Use __send__() instead of send()
- moved BasicObject into Fancy namespace
- added Object#lambda:
- Added lib/rbx/proc
- Year update to LICENSE
- cleanup Rakefile
- allow single method names be passed to Class#delegate:to_slot:
- Added FutureSend#when_failed:
- small bugfix for Class#delegate:to_slot:
- allow more flexible usage of whitespace in hash literals.
- allow hash literals with trailing commas at the end, similar to tuples and arrays
- Added Class#delegate:to_slot:
- Added Class#class_eval: wrapper method.
- Added Enumerable#map_with_index:
- Always use stringliteral as docstring if its the first expression in an ExpressionList (method/class defs).
- cleanup
- added Object#with_mutable_slots:do:
- don't exit programm within lib/fancy_spec but in bin/fspec instead, for better seperation of concerns.
- Small fix to Tuple#from:to: to allow Tuples to be used in splat-assignments as well.
- added Tuple#from:to:
- typo fix in docstring
- Added docstring to FutureSend class
- true, false & nil only behave like message sends when explicitly expressed that way syntactically.
- refactored Array#[]
- Moved Array#first - #fourth to Enumerable
- Improved Array#[] and String#[] and updates tests
- properly end comment for fancy-mode.el
- Merge remote-tracking branch 'origin/master'
- Published fancy-mode.el on marmalade-repo.org.
- typo fix in docstring
- added Enumerable#map_chained:
v0.6.0 (Jan 25, 2012)
----------------------
- More Docstrings
- Added docstrings to FutureSend
- Added docstring for File#expanded_path
- Bumped version for next release so it won't be forgotten.
- Pass args as explicit array to Block#call:
- use partial blocks where appropriate
- backported support for partial blocks to bootstrap compiler
- small naming fixes
- uncomment assertion
- Fix typo in KVO docstring
- Added KVO Mixin - Objective-C style Key-Value Observing
- Removed explicit typecheck in Array#remove_at:. It's bad..
- added Enumerable#to_hash:
- Fixed bug in FancyEnumerable#find:
- fixed Hash testcase to not rely on order of values in Array returned by Object#slots
- some fixes to Object docstrings
- fix bootstrap failing error. dammit.
- added fancy syntax highlighting to doc/features.md
- fixed Set#[]
- small positional fix
- fixed FutureSend#when_done: and also added FutureSend#with_value: as an alias for #when_done:
- Don't crash the vm when dealing with a parse/lex error. Closes #66
- cleanup
- added File##write:with: and File##read:with:
- Added Fancy code highlighting to README file
- Quit ifancy when entering 'quit' or 'exit'. Closes #67
- added System##abort
- added Fancy MessageSink class.
- added auto-load for files with fancy shebang line
- added support for Module#included: hook.
- added Hash#to_object
- renamed Block#object to Block#to_object for consistency reasons
- Moved installation logic for ruby dependencies in .fancypack files into RubyDependency class. And make sure to also install Ruby dependencies when running fancy install --deps
- Allow return as message selector and transform it at compile time into raise_returning it. This means that the following 2 lines of code are identical: (1,2,3) each: |x| { x println; return x } # and the new version: (1,2,3) each: |x| { x println; x return } # or short, using partial blocks: (1,2,3) each: @{ println; return }
- moves FancyEnumerable and FancyEnumerator into Fancy namespace instead of prefixing their names
- added Object#tap:
- fixed typo in Module#[] and added tests for it
- added some methods to Module
- added Array#to_hash
- added Object#copy_slots_from:
- added Block#to_hash_deep
- added Hash#fetch:else:
- added String#relative_path:
- Added Set#[]
- Added Tuple##with_values:
- Moved Array#each_with_index: into FancyEnumerable.
- added System##abort:
- added alias for Method#executable
- docstring fixes to String class
- added docstrings for aliased String methods
- reformatted docstring
- String#uppercase & String#lowercase
- added Symbol#to_sym
- cleanup
- added more aliases to Date
- Added Number#upto:in_steps_of:do: and Number#downto:in_steps_of:do:. Also moved Number specific tests into tests/number.fy
- added ruby alias for Array#flatten
- fixed docstring formatting for FDoc class and handle @{ partial block syntax correctly
- Reraise any exceptions thrown within a let binding's block.
- added another testcase for Block#to_a
- Return self for easy chaining
- Added Block#to_a for dynamically creating Arrays from Blocks, similar to Block#object and Block#to_hash
- Small fix to web server example and some Socket class changes.
- File improvements.
- Merge branch 'master' of github.com:bakkdoor/fancy
- check for eof? in Console#readln:
- added Hash#at:else:
- allow '. as symbol name
- Merge branch 'master' of github.com:bakkdoor/fancy
- Added Number#cubed.
- added mission lib/stringio.fy file
- always call blocks with html object
- changed partial blocks to send any messages in the block that don't have an explicit receiver to the first argument. this is nice for dsls while not changing the value of self unexpectedly
- added Enumerable#skip: as alias for Enumerable#drop:
- added Block#[] as alias for Block#call:
- small improvements to HTML class
- added html generator library
- added lib/parser/ext/.rbx/ to .gitignore
- Remove travis ci build status image since travis fails to run my tests correctly at the moment, even though they are passing.
- improved performance for Block#object and Block#to_hash
- use set to prevent failure in case the slots aren't returned in the exact same order
- fix bootstrap failure
- Let Object#slots return an Array instead of a Set.
- A bunch of optimizations for string interpolations and stuff.
- small improvement to Block#to_hash
- Some improvements to DynamicSlotObject and added Block#to_hash
- Added support for installing dependencies from a .fancypack file. Looks in the current directory. Run via: $ fancy install --deps
- added Block#object
- added TCPSocket#read:
- Added support for creating Arrays with a predefined size and a block to call for each element in that Array. Also added some more TCPSocket method wrappers.
- fix test
- explicitly wait for future completion
- Fix string interpolation for multi-line strings. Also added Regexp#m and Regexp#x methods.
- Get rid of old test
- Moved Method class doctstring.
- More docstrings to methods and classes in lib/rbx/ dir.
- fixed docstring for Fancy::Package::Uninstaller
- added docstring for Array#unshift:
- removed old spec file
- added String#substitute:with:
- Small fixes to html generator example
- Added Fixnum#random
- Small test with travis config.
- Added unary ruby methods to File class, ARGV#main?: and some more.
- small fix to highlighting of message selectors in fancy-mode.el
- added << and >> ruby aliases for Bignum and Fixnum classes (for left and right shifting)
- removed duplicate select: method from Array (already in FancyEnumerable)
- Updated AUTHORS file
- Catch errors when passing weird characters to RbReadline.
- Added tab-completion to infancy. Use RbReadline explicitly over c-readline as we need support for Readline#line_buffer which only RbReadline provides. Try to eval the current receiver when auto-completing method names, if possible.
- Correctly highlight dynamic variables.
- bumped version in lib/version.fy - oops...
- added Object#with_output_to:do:
v0.5.0 (Oct 05, 2011)
----------------------
- Use ruby instead of rbx in fancy_lib/ scripts that are used when fancy is installed via rubygems.
- Revert Converted ruby_lib/ scripts to shell scripts to make them run faster.
- Merge branch 'better_docstrings'
- Updated Changelog
- Converted ruby_lib/ scripts to shell scripts to make them run faster.
- Small fix to Block#while_true: docstring
- prepare for v0.5.0
- Use fast instructions for certain operations when compiling MessageSends. This speeds up things like Fixnum arithmetic.
- Require rubygems and ruby dependencies in generated include file when installing a fancy package.
- Small improvements to actors example
- Merge branch 'master' of github.com:bakkdoor/fancy
- Added FutureSend#failure and use correct mutex in FutureSend#failed:
- added another dynamic scoping example using *stdout*
- Removed weird goto shit
- Fixed docstrings formatting so example code is formatted correctly on api.fancy-lang.org
- Performance improvements for loops of up to 10x in certain cases by using dynamic_method() for the lower-level logic of while_true:. Still allow next/break to work, as expected by wrapping lower-level implementation in Block#while_true:. #speeed!
- Added more methods and tests to Array and Tuple.
- Added Symbol#arity for compatibility with Block api.
- Small doctoring fix to Object#do:
- Simplified Person example
- Simplified actor ring example.
- Added @return to doctoring for Object#do:
- Small fix to boot/code_loader so bin/fdoc works again.
- Removed obsolete Array#any?:
- Return false in FancyEnumerable#any?:
- Added Symbol#call in boot/fancy_ext/ to allow symbols being used as callables when passing them to ruby code.
- Use alias for Ruby's Array#[]= in Array#[]: instead of Object#ruby:args:
- Small changes to Array methods.
- Added Class#ruby_aliases:
- Small improvement to Array#inspect
- small fix to fancy-mode.el for parsing symbols
- small typo fix
- updated README and doc/features (mentioning dynamic scoping)
- Added boot/fancy_ext/bootstrap.rb which is needed during bootstrap process so *stdout* is defined and rake -v works.
- Use short-cut conditional messages in Block methods.
- Added missing FalseClass#if_nil:else:
- Return self in Object#do:
- Use String#include? in Object#message_name: to get rid of weird crash on rbx-2.0.0pre. Need to look into the actual cause of the crash later.
- print duration of running tests when running fspecp
- Small fix to FutureSend: Send future message to receiver's actor after setting up FutureSend object.
- Don't auto-load FancySpec on startup. Load it explicitly in bin/fspec instead.
- small fix to copying dynamic vars in Thread#new
- Added support for preserving the values of dynamic vars when spawning a new thread based on the values in the current thread.
- Small fixes to tests.
- Added lib/vars.fy and load it in lib/boot.fy on startup. Also use *stdout* in Object#println.
- Added support for dynamic variable bindings using let:be:in:. Uses * surrounding variable names to indicate dynamic variable, e.g. *stdin* or *dynamic_var*.
- Added another Future test
- ignore .rbx dir
- Fixed concurrency issues with FutureSend class on rbx-2.0.0pre
- Added ConditionVariable wrapper class.
- Added Mutex wrapper class to lib/rbx/.
- Sort values before comparing in Set test.
- Array#println returns nil
- More tests for Set
- Added missing tests for Stack.
- Use reverse_each: in Stack#each: