2010-06-21 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mcs / class / System / System.Text.RegularExpressions / ChangeLog
index e2452633605e3db948c9ed024a425f094aa98dc2..87ab36b7c85c8eacdf7d6e405ebb7177f998c4a9 100644 (file)
@@ -1,5 +1,293 @@
+2010-06-21  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * compiler.cs: Add new internal flag to switch on regexp tracing.
+       The code is a statc readonly variable so the JIT can eliminate
+       all tracing code during normal runs.
+
+2010-03-20  Miguel de Icaza  <miguel@novell.com>
+
+       * RxInterpreter.cs: Removed warnings.
+
+2010-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * BaseMachine.cs (Split): Don't add empty strings if they don't come from
+       the first capture group. Fixes #566117.
+
+2010-01-12  Miguel de Icaza  <miguel@novell.com>
+
+       * Regex.cs: Re-enable the new regex compiler as the bug seems to
+       be gone now.
+
+2009-09-07  Raja R Harinath  <harinath@hurrynot.org>
+
+       * Regex.cs (Escape, Unescape): Add null checks.
+       (validate_options): Add ECMAScript option checks.
+       (Replace, Split): Add a few bounds checks.
+
+2009-09-07  Raja R Harinath  <harinath@hurrynot.org>
+
+       Add some null checks and bounds checks.
+       * Regex.cs (default_startat): New.  Replaces the fragment
+       'RightToLeft ?  input.Length : 0' with a null-safe variant.
+       (Replace) <string variant>: Add null checks for argument strings.
+       (Split): Likewise.
+       (.ctor): Likewise.  Validate regex options partially.
+       (Match): Add null check on string arguments, and bounds checks for
+       offset and length arguments.
+
+2009-08-20  Raja R Harinath  <harinath@hurrynot.org>
+
+       Final piece of explicit numeric group support
+       * parser.cs (gap): New.
+       (GetMapping): Return it.
+       (ResolveReferences): Collect explicit numeric groups which may not
+       match their indices.
+       (HandleExplicitNumericGroups): New.  Process the above list to
+       assign appropriate indices, and compute the correct value of 'gap'.
+
+2009-08-20  Raja R Harinath  <harinath@hurrynot.org>
+
+       * syntax.cs (CapturingGroup.Index): Rename from Number to clarify
+       semantics.
+       (CapturingGroup.CompareTo): New.
+       * parser.cs, syntax.cs: Update to changes.
+
+2009-08-20  Raja R Harinath  <harinath@hurrynot.org>
+
+       Implement some more group number/index distinction
+       * Regex.cs (gap, Gap): New.
+       (Init, InitNewRegex): Update it.
+       (GroupNumberFromName): If the 'name' is beyond the gap, it is an
+       explicit numeric group -- use the name as the group number.
+       (GetGroupIndex): Use a binary search to map a group number to its
+       index when we know that they don't match.
+       (GroupNumbers): Use group number, not group index, for explicit
+       numeric groups.
+       * Match.cs (.ctor): Use the newly introduce 'Regex.Gap'.
+
+2009-08-19  Raja R Harinath  <harinath@hurrynot.org>
+
+       * Regex.cs (group_numbers): New.
+       (GetGroupNumbers): Move array initialization ...
+       (GroupNumbers): ... to new on-demand initializer.
+
+2009-08-19  Raja R Harinath  <harinath@hurrynot.org>
+
+       * Regex.cs (group_names): Rename from _groupNumbersToNameMap.
+       (GetGroupNamesArray): Use an IDictionaryEnumerator to walk the
+       mapping, since both the key and value are used in the loop.
+
+2009-08-19  Raja R Harinath  <harinath@hurrynot.org>
+
+       Introduce 'gap' concept into all the variants of regex
+       * arch.cs (IMachineFactory::Gap): New property.
+       * compiler.cs (InterpreterFactory): Update to changes.
+       * RxCompiler.cs (RxInterpreterFactory): Likewise.
+       * JvmReMachineFactory.cs: Likewise.
+       * parser.cs (GetMapping): Return the 'gap' index.  Move creation
+       of mapping dictionary ...
+       * Regex.cs (CreateMachineFactory): ... here.  Update to changes.
+
+2009-08-18  Raja R Harinath  <harinath@hurrynot.org>
+
+       Distinguish between the internal index of a group and group number.
+       * Regex.cs (GetGroupIndex): New.
+       (GroupNameFromNumber): Use it.
+       * GroupCollection.cs (.ctor): Introduce 'gap' argument.  It is the
+       index of the first group whose group number differs from its index.
+       (Item.get): Likewise.
+
+2009-08-18  Raja R Harinath  <harinath@hurrynot.org>
+
+       * parser.cs (GetMapping): Extend duplicate check for numeric
+       groups too.
+
+2009-08-17  Raja R Harinath  <harinath@hurrynot.org>
+
+       * parser.cs (ResolveReferences): Handle some cases of
+       explicitly-named numeric groups.
+
+2009-08-17  Raja R Harinath  <harinath@hurrynot.org>
+
+       * parser.cs (ResolveReferences): Rearrange slightly to prepare for
+       future changes.
+
+2009-08-17  Raja R Harinath  <harinath@hurrynot.org>
+
+       * Regex.cs (GetGroupNumbers): List group numbers in ascending order.
+       (GetGroupNames): List names in order of group number.
+
+2009-08-12  Raja R Harinath  <harinath@hurrynot.org>
+
+       * syntax.cs (BackslashNumber.ResolveReference): Improve ECMAScript
+       semantics.  Handle cases like "group 43 exists but group 4 doesn't".
+
+2009-08-10  Raja R Harinath  <harinath@hurrynot.org>
+
+       * syntax.cs (BackslashNumber.ResolveReference): Implement fallback
+       to octal numbers, and ECMAScript semantics.
+       * parser.cs (ResolveReferences): Use it.
+
+2009-08-10  Raja R Harinath  <harinath@hurrynot.org>
+
+       * syntax.cs (BackslashNumber): New class.
+       * parser.cs (ParseSpecial): Create it instead of 'Reference' if a
+       numeric backreference is seen.
+
+2009-08-10  Raja R Harinath  <harinath@hurrynot.org>
+
+       * parser.cs (ResolveReferences): Allow named groups to be
+       referred-to by their group numbers too.
+
+2009-04-23  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * Regex.cs: Remove Compiler-related support for NET_2_1
+       * RegexOptions.cs: Remove Compile from values available on NET_2_1
+
+2009-03-04  Zoltan Varga  <vargaz@gmail.com>
+
+       * RxInterpreter.cs (ResetGroups): Avoid allocating larger than needed
+       arrays.
+
+2009-02-27  Jonathan Pryor <jpryor@novell.com>
+
+       * Regex.cs (Replace): Check that input & evaluator are not null, as
+         documented in MSDN (and the variance found while testing DbLinq).
+
+2009-02-27  Zoltan Varga  <vargaz@gmail.com>
+
+       * BaseMachine.cs (LTRReplace): Initialize the StringBuilder with an
+       appropriate initial length.
+
+2009-02-24  Zoltan Varga  <vargaz@gmail.com>
+
+       * CILCompiler.cs: Partially inline calls to Char.ToLower () to speed
+       up ignorecase matching.
+
+2009-02-16  Jb Evain  <jbevain@novell.com>
+
+       * Regex.cs: on the NET_2_1 profile, always use the old engine for now.
+
+2009-02-14  Zoltan Varga  <vargaz@gmail.com>
+
+       * Regex.cs: Add a MONO_NEW_RX variable to enable the new regex
+       engine.
+
+2009-02-04  Zoltan Varga  <vargaz@gmail.com>
+
+       * Regex.cs: Disable the new regex engine for now.
+
+2009-01-14  Zoltan Varga  <vargaz@gmail.com>
+
+       * CILCompiler.cs: Avoid throwing exceptions for a few more unhandled opcodes.
+       Implement the reverse/ignorecase versions of Reference. Fix the reverse
+       version of Bitmap. Error out if a Jump opcode jumps outside the current
+       pc range. This works around #466151.
+
+2009-01-12  Jb Evain  <jbevain@novell.com>
+
+       * RxInterpreter.cs: set trace_rx to false for NET_2_1.
+       * Regex.cs: set old_rx to false for NET_2_1.
+
+2009-01-07  Zoltan Varga  <vargaz@gmail.com>
+
+       * RxInterpreter.cs: Add support for constant strings in anchors. Fixes
+       #464135.
+
+2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
+
+       * cache.cs: avoid infinite loop.
+
+2008-11-14 Gonzalo Paniagua Javier <gonzalo@novell.com>
+
+       * cache.cs:
+       * Regex.cs: honor CacheSize value.
+
+2008-11-13  Zoltan Varga  <vargaz@gmail.com>
+
+       * RxInterpreter.cs: Fix pc computation in various opcodes. Fixes #443841.
+
+2008-11-11  Zoltan Varga  <vargaz@gmail.com>
+
+       * CILCompiler.cs: Implement Reference opcode.
+
+2008-10-30  Zoltan Varga  <vargaz@gmail.com>
+
+       * CILCompiler.cs: Implement SubExpression opcode.
+       
+       * CILCompiler.cs: Save and restore strpos in the Test opcode. Fixes
+       #439947.
+
+2008-10-25  Zoltan Varga  <vargaz@gmail.com>
+
+       * CILCompiler.cs: Implement Test opcode.
+
+2008-10-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
+
+       * RxInterpreter.cs: implement missing Unicode* opcodes and
+       StringReverseIgnoreCase.
+
+2008-10-25  Zoltan Varga  <vargaz@gmail.com>
+
+       * RxOp.cs: Remove unused Generic opcodes.
+
+       * RxCompiler.cs: Emit opcodes with flags using methods which can be 
+       overriden by CILCompiler.cs, so we only have to override a few methods.
+
+       * CILCompiler.cs: Simplify based on the RxCompiler changes. Implement
+       UnicodeString opcode. Throw a NotImplementedException when an unsupported
+       opcode is encountered, since the IL compiler is now believed to be feature 
+       complete.
+
+2008-10-24  Zoltan Varga  <vargaz@gmail.com>
+
+       * RxInterpreter.cs CILCompiler.cs gen-interp.cs: Fix the reading of short 
+       values from the instruction stream.
+
+       * RxOp.cs: Add some missing unicode opcodes.
+
+       * gen-interp.cs RxInterpreter.cs: Generate Bitmap/UnicodeBitmap opcodes too.
+
+       * CILCompiler.cs (EmitEvalMethodBody): Add an 'end_pc' argument to mark the
+       end of the bytecode range which needs to be compiled. Use it to avoid
+       compiling the same bytecode multiple times in various opcodes. Fix
+       RxOp.Jump implementation. Add implementation for unicode opcodes.
+
+2008-10-09  Zoltan Varga  <vargaz@gmail.com>
+
+       * CILCompiler.cs: Implement NoBitmap/NoBitmapIgnoreCase. Fixes #432172.
+
+2008-09-14  Zoltan Varga  <vargaz@gmail.com>
+
+       * gen-interp.cs: New file to generate the all variants of the character 
+       checking opcodes in RxInterpreter.cs.
+
+       * RxInterpreter.cs: Replace hand written code with code generated by
+       gen-interp.cs.
+       
+       * RxInterpreter.cs: Fix the failure case of the No<XXX> opcodes. Fixes
+       #426142.
+
+2008-09-13  Zoltan Varga  <vargaz@gmail.com>
+
+       * RxInterpreter.cs RxCompiler.cs: Implement some missing Category opcodes.
+
+2008-09-07  Zoltan Varga  <vargaz@gmail.com>
+
+       * CILCompiler.cs: Override ICompiler.EmitSet too so we set op_flags for 
+       Bitmap opcodes too. Fixes #424073.
+
+2008-09-06  Zoltan Varga  <vargaz@gmail.com>
+
+       * Regex.cs: Make the new regex interpreter+compiler the default.
+
 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
 
+       * RxInterpreter.cs: Port the Anchor+StartOfString optimization from the old
+       interpreter. Add credits.
+
+       * RxCompiler.cs (EmitString): Lowercase the string if ignore is true.
+
        * CILCompiler.cs: Fix the setting of the match position in the
        anchor+char optimization.