In the last episode (Jun 27), Mirar @ Pike developers forum said:
Regexp re = Regexp.PCRE("([a-z]+)"); re->split("123abc123");
error returned from exec: ERROR.BADOPTION
Ups. Good observation.
Also, side note - the ovector size is defined as 3000 - isn't this an overkill for most cases? It will consume 12K of stack space with every call to exec() (at least, this space is not dynamically allocated, which would be even worse).
12K isn't much, since the stack is at least 2Mb on any machine I know. And it's quickly eaten up if you use recursive regexps, which you can do with PCRE.
The thread stack may be significantly less, though. Back in 2002 I determined the default stack size for threaded programs on a bunch of OSes:
AIX 96K FreeBSD 64K HP-UX 64K IRIX 128K Linux 2M Solaris 1M Tru64 5M
On 32-bit platforms, a large stack size really eats into your memory. 200 threads would require 400MB of space just for the stacks.