You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Recently I looked into the "to-be-3.07" CVS version of Str library,
and found that the engine written in C is almost thread-safe.
It seems that all global states are stored in Caml-level variables,
and only thread-unsafe portions of code are two static
temporary variables "re_group" and "re_register" in strstubs.c,
which can easily be moved to either stack or heap.
I think that interface for Str module should not be changed for
both compatibility and convenience. (But some replace-related functions
can be MT-safe without modification to their interface.)
So either providing a new module (like my MtStr), or adding another
set of functions for Str module might be desirable.
The text was updated successfully, but these errors were encountered:
I think Str will be moved out of the compiler distribution in due course, so it seems most unlikely that it will be augmented with a thread-safe version prior to that time.
Original bug ID: 1625
Reporter: administrator
Status: closed (set by @mshinwell on 2016-12-07T15:24:22Z)
Resolution: won't fix
Priority: normal
Severity: feature
Category: otherlibs
Bug description
Full_Name: Yutaka OIWA
Version: 3.06+27
OS: Linux
Submission from: h219-110-060-091.catv01.itscom.jp (219.110.60.91)
How about to provide thread-safe variant of Str library?
It would be useful to have an MT-safe regexp library
in the standard distribution.
Previously, I wrote a thread-safe wrapper for Str library
using mutex, which is http://www.oiwa.jp/~yutaka/mtStr.mli
and http://www.oiwa.jp/~yutaka/mtStr.ml .
Recently I looked into the "to-be-3.07" CVS version of Str library,
and found that the engine written in C is almost thread-safe.
It seems that all global states are stored in Caml-level variables,
and only thread-unsafe portions of code are two static
temporary variables "re_group" and "re_register" in strstubs.c,
which can easily be moved to either stack or heap.
I think that interface for Str module should not be changed for
both compatibility and convenience. (But some replace-related functions
can be MT-safe without modification to their interface.)
So either providing a new module (like my MtStr), or adding another
set of functions for Str module might be desirable.
The text was updated successfully, but these errors were encountered: