Release Notes

Version 2.3 beta

Class Models

All Models
New operation memberof(class, name) that gets the value of a member defined by a class;

Class Library

New Classes
  • loop.collection.UnorderedArraySet
  • loop.compiler.Arguments
  • loop.object.Publisher
loop.collection.MapWithArrayOfKeys
  • Bugfix when mapping key values to false;
loop.collection.OrderedSet
  • Bugfixes to deal with nil parameters and false elements properly;
loop.debug.Inspector
  • Improvement to support commands step, step "in" and step "out";
  • Improvement to support definition of break points;
  • Improvement to support command lua to retrieve values from the Lua global environment, i.e. _G;
loop.debug.Matcher
  • Improvement to hold the values being compared at indexes 0 (second parameter) and 1 (first parameter) to be able to provide better error messages;
loop.debug.Verbose
  • Bugfix when default inspection (self.inspect = true) was used;
  • Bugfix to use a specific Viewer instance to avoid changing the behavior of the class loop.debug.Viewer;
loop.object.Exception
  • Bugfix to allow subclasses to work with the inherited __concat metamethod;
loop.serial.FileStreamer
  • Bugfix when multiple values were serialized into a file using different put calls;
loop.serial.Serializer
  • Bugfix for proper serialization of global non-serializable functions;
  • Bugfix to show a proper error message when attempting to serialize a userdata without custom serialization metamethod;
  • Bugfix so all fields of loaded packages that have unique values (i.e. tables, functions, threads or userdata) are serialized as package fields instead of ordinary serializable values;
  • Improvement so serialized code generated by redefined serialization functions for specific Lua types does not have to follow any protocol anymore. However, to avoid future serialization of the same value the a value retrieval code must be registered in the serializer using the serialized value as key;
loop.thread.CoSocket
  • Bugfix when operation send yielded due to a full buffer;
  • Bugfix in select to prevent wrong socket selection;
  • Bugfix in select when executed without yielding and returned sockets instead of socket wrappers;
  • Improvement by use of package socket.core instead of socket package;
  • Improvement by addition of cosocket verbose tag as a new level of verbose in loop.thread.Scheduler verbose;
loop.thread.IOScheduler
  • Bugfix to prevent duplicated verbose message already printed by the super class.;
loop.thread.Scheduler
  • Bugfix in remove(coroutine) when coroutine == self.currentkey;
  • Bugfix in constructor that created instances that shared data structures used by the class. The new constructor also allows objects that already are instance of the class to be constructed again perserving its state;
  • Bugfix when coroutine-safe pcall executed C functions;
  • Improvement in remove(coroutine) to return the removed coroutine plus the time it should wake up if it was suspended;
  • Improvement by addition of method halt() that stops the scheduling performed by method run();
loop.thread.Timer
  • Bugfix that prevents the timer thread to end after first execution;
  • Bugfix when timer was disabled;

General Utilities

loop.table
  • Bugfix in function clear(table) when table contained a false key;
  • Improvement in function copy(table [, destiny]) that now performs a raw copy, i.e. using rawset;
precompiler.lua and preloader.lua
  • These scripts now support new command-line options but their current implementation require class loop.compiler.Arguments to handle these options properly (see instructions here);

Copyright (C) 2004-2008 Tecgraf, PUC-RioThis project is currently being maintained by Tecgraf at PUC-Rio.