Hello IronPython Community, We have just released IronPython 1.0 Beta 8. This release continues our focus on improving compatibility w/ CPython. It also includes the last set of large design changes to IronPython 1.0 including a new method dispatch algorithm that should be closer to C# and VB, but also will now throw in some cases if the method dispatch is ambiguous. There are also a large number of changes in the public API surface as we lock down for the final release (there will be one more set of changes to make fields private in the AST). We'd love to hear your feedback on these changes. Finally we've also included one new module in this release that has had high demand from the community: socket.
A more complete list of changes follows at the end. You can download the release from: http://www.microsoft.com/downloads/details.aspx?FamilyId=FA3F9CC7-2A0D-41D3-AE51-0AEF8DFA7C57&displaylang=en We'd like to thank everyone in the community for your bug reports and suggestions that helped make this a better release: AaronM, Adnand Dragoti, Angelo Xu, Aude Espesset, Brian Loyd, CParmar, JesseK, Jonathan Jacobs, Keith J. Farmer, MFenniak, Michael Foord, Michael Shilman, Paparipote, Pelikhan and Seo Sanghyeon. Thanks and keep in touch, The IronPython Team Complete list of changes =================== Implement operators for all standard .NET types re.search returns the correct value ExecuteFile now returns Nullable<int> to indicate whether SystemExit was returned Unhandled exceptions during startup are printed to the console Bitwise operators for standard .NET types are implemented (Byte, SByte, Int16, Uint16, Uint32, Uint64) Fixed issue w/ method dispatch & ref and out args Enabled test_eof from standard CPython regression test suite Bugfix: Dynamic method binding via __get__ is broken for both old and new style classes Bugfix: inconsistency with hash() on types extending builtin basic types Bugfix: unary operators not working for user types derived from basic types Bugfix: issues subclassing tuple, str, unicode, file, and list Bugfix: Errors creating builtin types using keyword arguments Bugfix: CodeDom.FileExtension returns "" Bugfix: str/repr of generic/non-generic collided types shows generic type name Bugfix: SyntaxError expected when function parameter is declared as global Bugfix: test_sys: SystemError is missing 'code' attribute Bugfix: cStringIO module implementation incomplete Experimental static compilation support (disabled by default) Support creating exceptions that logically live in other modules New organization & harness for IronPython regression tests New Hosting API revisions Fix compilation warnings on Mono Bugfix: IndexError, IndexOutOfRangeException on definition of usertype with multiple inheritance Bugfix: subclassing long is broken Bugfix: expecting __repr__ returned non-string Bugfix: file object missing a name member and doc strings Bugfix: Fix special method lookup for new style classes Bugfix: Add imp module Bugfix: dir() scoping bug Bugfix: Cleanup communication between the parser and PythonEngine used to determine when to continue a multi-line statement in the interpreter Improved test code for test_imp Bugfix: Deriving from sys module (and other builtins that implement ICustomAttributes) is broken. Bugfix: __bases__ is immutable when dealing with new-style classes. We were not updating MRO of subtypes Bugfix: __getattributes__ now works with builtins and .NET types Bugfix: vars() obeys the "import clr" context rules Bugfix: Disallow inheriting from function and instance-method Remove binary backwards compatibility for beta 6 -> beta 7 transition Bugfix: Issues subclassing dict, misaligned arguments on construction Bugfix: __call__ doesn't support keyword arguments Bugfix: __name__ is immutable Bugfix: tuple.ToString() doesn't work after import clr Fix issue w/ file handle implementation in nt Bugfix: scope: del a variable which name is also used in a list inside nested function Bugfix: scope: expect no NameError after that name is assigned in exec statement (inside a func) Bugfix: eval(expr, None, None) throws Bugfix: locals() don't include closure variables Bugfix: Scope: eval on a variable defined outside the function Bugfix: Test case disabled in test\test_decorators.py Bugfix: Constructing int from System.Single doesn't work Bugfix: builtin function help needs to be implemented Bugfix: Test pass takes forever Bugfix: 3 remaining issues in test_complex.py Bugfix: subclassing long is broken Bugfix: issues subclassing tuple, str, unicode, file, and list Disable traceback test on 64-bit machines Bugfix: issues with multiple inheritance and super Bugfix: Remove assert keyword from the test suite EngineContext was redundant with Frame Finish SymbolId propogation through code base Bugfix: nt.chmod flags are wrong (initialized as decimal rather than hex) Bugfix: Re-implement time.clock to use the high-performance stop watch class Bugfix: __slots__ implementation is broken Bugfix: enable sbs_typeop.py Bugfix: test_sys: sys.version_info needs to return a tuple containing 5 components Bugfix: __dict__ assignment doesn't work Bugfix: TypeError inheriting from multiple metaclasses Bugfix: Remove ValueType from __mro__ of value types Bugfix: Binascii returns incorrect results sometimes Bugfix: (complex.__ne__(1+1j, 1+1j) is False) == True Bugfix: exec doesn't handle mappings, it requires dictionaries Bugfix: exec "code" in global generates expression for global twice Bugfix: exec code in g, l evaluates g and l in the wrong order Added overloads of PythonEngine.Execute* that take a Frame and ExecutionOptionsAll the PythonEngine.Execute* APIs throw exceptions instead of catching them and converting to error codes Add CompiledModule type (CompiledModule is comparable with FrameCode since it contains the code for a PythonModule, but not the state associated with the module.) Bugfix: PythonEngine API: why engine.ExecuteFile(fileName) can't be debuged. If ExecutionOptions.EnableDebugging is specified, we emit code in debuggable snippets assembly. Added default constructor for Frame Bugfix: divmod issue Additional test cases for regular expressions Bugfix: Missing feature/functionality/implementation in Importer.cs Bugfix: implement type.mro() Bugfix: enable Scenario7 in EngineTest.cs Bugfix: from package.module import module imports module from it's self Bugfix: Issue with metaclasses declared nested in methods Bugfix: Stack overflow on importing package with mutually referencing modules Bugfix: dict construction compat issues Bugfix: More mro inconsistency when dealing with mixes of new and old style classes in a hierarchy New public CreatePythonException functions to support external modules creating old-style exceptions and test cases Added attributes injector feature and the related test. Bugfix: TypeError inheriting from multiple metaclasses Bugfix: OldInstance.TryGetAttr throws if AttributeError is raised by __getattr__ Removed IConsole interface Bugfix: Make delegate instance callable Bugfix: ExtensibleComplex doesn't work Bugfix: Traceback support for top-level code TraceBack is exposed publicly to other C# code Add Get/SetVariables overload that takes frame Added new CompileFile methods (2 overloads) Made the IFrameEnvironment members overridable in the Frame class Added TryGetGlobal to IFrameEnvironment. Bugfix: Custom dictionary types were not marked with [PythonType(typeof(Dict))]. Bugfix: Similarly, the CompiledModules did not have this. Hence isinstance(mymodule.__dict__, dic) was returning False. Bugfix: OpsReflectedType.OpsTypeToType mapped ArrayOps to the last loaded array type. Bugfix: class C(Interface): pass would look up the methods of the Interface on System.Object, which is incorrect. Bugfix: isinstance(old_style_class(), object) and isinstance(None, object) should return True Bugfix: IronPython: Command prompt shown when launching/debugging Windows Forms project Major overhaul of binding rules to better handle ambiguities, to better match C# and VB's rules and to unify the code paths between reflect optimized binding resolution. Marked Emit and Evaluate functions on the AST as private, making CodeGen internal to IronPython Bugfix: added a check for empty inheritance. Fixes to improve ability to pass more of stand-alone CodeDom test suite Renamed: Frame -> ModuleScope Renamed: FrameCode -> CompiledCode Renamed: PythonEngine.Get/SetVariable(string) -> PythonEngine.Get/SetGlobal(SymbolId) Renamed: PythonEngine.Execute(object) -> PythonEngine.Execute(CompiledCode) Renamed: IFrameEnvironment -> IModuleScope + IModuleEnvironment Bugfix: Add support for unsigned integer types (and other missing data types) Misc. code cleanup Bugfix: Re-enable delegates.py test case, and generally improve delegate support (out, ref, and params support for delegates) change static object field PythonEngine.ExecWrapper to static delegate property ConsoleCommandDispatcher. Bugfix: Missing feature/functionality/implementation in Function.cs Bugfix: Binding: ReflectOptimizer loses error information Bugfix: issues with list.__rmul__ ExtensibleComplex now implements IRichComparable __del__ support for new-style classes Improvements to pass all of test_long except logs test Entering a blank line in the console generates error __bases__ is immutable when dealing with new-style classes Implementing TrueCompare for ExtensibleComplex More code coverage for the .net datatype operators Bugfix: INumber doesn't handle all data types, therefore the datatypes must implemente the operators directly rather than delegating to INumber Bugfix: ReverseXXX on float calculated non-reverse result in some cases Bugfix: SingleOps didn't throw on division by zero Bugfix: consistent ~ operator for all unsigned types Bugfix: moved the tests into test_numtypes.py Bugfix: PythonEngine.Evaluate should not change module name to "<eval>". Bugfix: SuperConsole tab completion off end of cmd buffer should be detected and anchor position decremented per line scrolled. Added AutoIndent and made AutoIndent, ColorfulConsole, and TabComplete orthogonal flags. Removed HandleExceptions and PressAnyKeyToContinue flags from Console. #ifdef out COM GAC crawling code. Cleaned up code generation scripts Increased code coverage for .net data type operators Bugfix: fix for the case of ExtensibleLong ** UInt64 in which the UInt64 would get converted to double rather than staying integer. Bugfix: Explicit interface properties are always getting long-names Bugfix: Tuple hashing doesn't seem to call new-class's __hash__ function Bugfix: support __coerce__ method in ops. Implement socket module, enabling standard library tests to pass: BaseHTTPServer, DocXMLRPCServer, SimpleHTTPServer, SimpleXMLRPCServer, SocketServer, cgi, ielib, ftplib, httplib, imaplib, macurl2path, mimetypes, nntplib, poplib, robotparser, smtplib, and urllib. socket passes with modifications. Bugfix: Threads now properly exit when SystemExit is raised Bugfix: IP.Compiler.NewTypeMaker now handles types correctly when generating properties Bugfix: CodePlex 446 - Compiler throw on invalid syntax Add new IronPythonWindow.exe for launching Windows apps w/o console Moved many classes to be private to IronPython, refactored namespaces Bugfix: 357 - Subclassing dict, not overriding init, and passing k/w args throws Bugfix: 424 - Implement DynamicType clr.GetPythonType(Type t) Bugfix: 439 - System.Array.Resize throws IndexError Bugfix: Fix __slots__ / __weakref__ / __dict__ issue where we pick the wrong base type More .NET primitive type operations clean-up & test coverage Support for 2.5 PEP 308 (enabled w/ -X:Python25) Bugfix: PreParseRegex incorrectly identifying the '?' in r"\(? " as an extension instead of 0 or 1 left parens Bugfix: ?# is not being recognized as an extension by PreParseRegEx Bugfix: a list is equal to empty string and other sequence types, eg [3, 5] == '' _______________________________________________ users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
