Re: thread safe functions

2010-12-18 Thread Andy Wingo
Greets,

On Sat 21 Aug 2010 03:35, ri...@happyleptic.org writes:

>> If you have found something in `format' that is not thread-safe, do
>> let us know.
>
> Well, apparently for format this was already known, see the last
> sentence of this old msg from Marius Vollmer :
>
> http://www.mail-archive.com/bug-guile@gnu.org/msg01949.html

I think this was fixed actually, in 

commit 093d2ca9afb2cb71317fea221466fe0946c94062
Author: Marius Vollmer 
Date:   Mon Sep 15 13:37:50 2003 +

(format): Rewritten as a big letrec to make it reentrant.  No mutex is
necessary.  Thanks to Clinton Ebadi!

I have poked format a bit because it was offensive to the eye; but I
don't know of any threadsafety issues there.

Cheers,

Andy
-- 
http://wingolog.org/



Hangup in regexp-matching

2010-12-18 Thread Marek Kubica
Hi,

I do a bit regexp-matching in my log analyzer but found out that the
Regexp engine chokes on some input (see attached file). It just takes
100% CPU time and never returns.

I thought that I might have hit some obscure O(2^n) problem of FAs, I
tried the same thing in Python and it worked immediately:

>>> s = "20:15 < foobar> \"Bei den Programmiersprachen rechnet er für
die nächsten zehn Jahre mit keinen neuen Entwicklungen, da es mit
zu viel Aufwand verbunden sei, neue Sprachen in den Markt zu
drücken. So wird die Programmierwelt auch in zehn Jahren noch aus
Java und C++ bestehen. Den funktionalen Sprachen erteilt er eine
Absage: \"Ihr Problem ist, dass sich damit zwar komplizierte
Abläufe einfach darstellen lassen, dass aber leider einfache Dinge
zu"
>>> import re 
>>> re.findall("[A-~]{1,16}\\+\\+", s)
['C++']

Any ideas what is happening?

regards,
Marek
(use-modules (ice-9 regex))
(define s "20:15 < foobar> \"Bei den Programmiersprachen rechnet er für die nächsten zehn Jahre mit keinen neuen Entwicklungen, da es mit zu viel Aufwand verbunden sei, neue Sprachen in den Markt zu drücken. So wird die Programmierwelt auch in zehn Jahren noch aus Java und C++ bestehen. Den funktionalen Sprachen erteilt er eine Absage: \"Ihr Problem ist, dass sich damit zwar komplizierte Abläufe einfach darstellen lassen, dass aber leider einfache Dinge zu")
(define add (make-regexp "[A-~]{1,16}\\+\\+"))
(list-matches add s)