<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-base.

</pre>
<p><a href="https://github.com/macports/macports-base/commit/169b1edfe81f97ae7207765ded51395be316779f">https://github.com/macports/macports-base/commit/169b1edfe81f97ae7207765ded51395be316779f</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 169b1edfe Improve performance of "and not" in boolean expressions
</span>169b1edfe is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 169b1edfe81f97ae7207765ded51395be316779f
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Wed Feb 21 08:28:16 2024 +1100

<span style='display:block; white-space:pre;color:#404040;'>    Improve performance of "and not" in boolean expressions
</span>---
 src/port/port.tcl | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port/port.tcl b/src/port/port.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 9d698a6e4..1e3b9ef9a 100755
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port/port.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port/port.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -993,13 +993,27 @@ proc andExpr { resname } {
</span>                     advance
 
                     set blist [list]
<span style='display:block; white-space:pre;background:#e0ffe0;'>+                    # Handle "and not" as a direct operation, rather
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    # than first calculating everything that is not b.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    if {[lookahead] eq "not"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        advance
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        set complement 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        set complement 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>                     set b [unaryExpr blist]
                     if {!$b} {
                         return 0
                     }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    # Calculate a intersect b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    set reslist [portlist::opIntersection $reslist $blist]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    if {$complement} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        # Calculate relative complement of b in a (AKA set difference)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        set reslist [portlist::opComplement $reslist $blist]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        # Calculate a intersect b
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        set reslist [portlist::opIntersection $reslist $blist]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    }
</span>                 }
             default {
                     return $a
</pre><pre style='margin:0'>

</pre>