Previously pragmas could be attached only to whole statements, this change
allows attaching pragmas to inline statements, eg.:
template rewriteAdd{a + b}(a: expr, b: expr): expr =
({.noRewrite.}: a + b) + 1
Code above will cause a + b to be rewritten once, because rewriteAdd attaches
{.noRewrite.} to resulting a + b expr.
Term rewriting macros/templates are currently greedy and they will rewrite as
long as there is a match. So there was no way to ensure some rewrite happens
only once, eg. when rewriting term to same term plus extra content.
With new macro we can actually prevent further rewriting on marked expr or
stmts, eg. with given example echo(...) will be rewritten just once:
template pwnEcho{echo(x)}(x: expr) =
{.noRewrite.}: echo("pwned!")
echo "ab"
newFileLogger and newRollingFileLogger have a new bufSize parameter that
is used in open(). The default value -1 has the same behavior as before.
Use 0 for unbuffered output to log file.
Exporting newSocket(fd) mimics what asyncnet does and lets you pass in your
own socket FD.
newSocket*(fd) and newAsyncSocket*(fd) now both take "buffered" instead of
"isBuff" and defaults to true to match the other constructors on both.
* nre-proj/master: (132 commits)
Change to options module
Reweave readme
Better handle errors
Update documentation
Change flags to inline
Improve performance
Add tests for empty or non-empty match
Fix skipping an empty match at the end
Add longer flags
Fix getinfo overflows
Use docweave
Convert readme to RST
Fix result shadowing warning
Throw an exception when replacing with a nil value
Fix potential buffer overflow
Fix zero-length matches for multibyte characters
Make splitting an empty string give 1 empty result
Change endpos to inclusive
Change endpos default from -1 to int.high
Change capture upper bounds to inclusive
...