]> Sergey Matveev's repositories - public-inbox.git/blobdiff - HACKING
v2writable: nproc_shards: subtract 1 from given value
[public-inbox.git] / HACKING
diff --git a/HACKING b/HACKING
index c2f4825c4f4fa0ef0cff8c3e961ace4a0b9dfe51..859745ef3151c642c22623b6ce31327f3f563e67 100644 (file)
--- a/HACKING
+++ b/HACKING
@@ -40,7 +40,13 @@ the shiny new.
 Avoid relying on compiled modules too much.  Even if it is Free,
 compiled code makes packages more expensive to audit, build,
 distribute and verify.  public-inbox itself will only be implemented
 Avoid relying on compiled modules too much.  Even if it is Free,
 compiled code makes packages more expensive to audit, build,
 distribute and verify.  public-inbox itself will only be implemented
-in scripting languages (currently Perl 5).
+in scripting languages (currently Perl 5) and optional JIT-compiled C
+(via Inline::C)
+
+Do not recurse on user-supplied data.  Neither Perl or C handle
+deep recursion gracefully.  See lib/PublicInbox/SearchThread.pm
+and lib/PublicInbox/MsgIter.pm for examples of non-recursive
+alternatives to previously-recursive algorithms.
 
 Performance should be reasonably good for server administrators, too,
 and we will sacrifice features to achieve predictable performance.
 
 Performance should be reasonably good for server administrators, too,
 and we will sacrifice features to achieve predictable performance.
@@ -49,3 +55,11 @@ requirements.
 
 See design_www.txt and design_notes.txt in the Documentation/
 directory for design decisions made during development.
 
 See design_www.txt and design_notes.txt in the Documentation/
 directory for design decisions made during development.
+
+Perl notes
+----------
+
+* \w, \s, \d character classes all match Unicode characters;
+  so write out class ranges (e.g "[0-9]") if you only intend to
+  match ASCII.  Do not use the "/a" (ASCII) modifier, that requires
+  Perl 5.14 and we're only depending on 5.10.1 at the moment.