pugscode.org/ | nopaste: sial.org/pbot/perl6 | ?eval [~] <m oo se> | We do Haskell, too | > reverse . show $ foldl1 (*) [1..4] | irclog: irc.pugscode.org/
Set by diakopter on 11 July 2007.
pugs_svnbot r17825 | azawawi++ | [runpugs] general cleanup: cgi-bin and cgi-perl gone, only mod_perl version remains 05:59
diff: dev.pugscode.org/changeset/17825
lambdabot Title: Changeset 17825 - Pugs - Trac
moritz_ good localtime() everyone ;) 06:02
pugs_svnbot r17826 | azawawi++ | [runpugs] added scripts used by wim on feather, updated README 06:08
diff: dev.pugscode.org/changeset/17826
lambdabot Title: Changeset 17826 - Pugs - Trac
ahmadz hi there ;-)
moritz_ hi ;) 06:10
ahmadz how r u moritz?
moritz_ I'm fine ;-) 06:21
ahmadz cool
moritz_ no work until october 15th ;)
happy hacking ;)
what about you?
ahmadz have lots of free time this month ;-)
moritz_ where are you? 06:22
ahmadz jordan/middle east
moritz_ I somehow expected you to be in scotland like andara aka wim ;) 06:23
ahmadz ;-)
moritz_ well, IRC doesn't support geographic maps ;) 06:24
ahmadz what about you, germany?
moritz_ right
no, bavaria ;) 06:25
ahmadz ;-)
moritz_ (bavaria is in germany, but most bavarians feel that it shouldn't)
ahmadz i know
moritz_ but thankfully nobody's gonna change it ;) 06:26
ahmadz i watched a doc special about it in DW-TV...
moritz_ currently reads the recent diffs on p6l 06:28
ahmadz i was wondering if runpugs could do kp6, but dont know if safe mode is there or not... 06:29
moritz_ it is ;)
I requested it for exp_evalbot and renormalist++ implemented it at the YAPC::EU hackathon 06:30
kp6: say "hi"
where is that stupid bot?
ahmadz hmmm cool, then runpugs could do kp6 easily 06:30
moritz_ it died with segfault - that's bad...
kp6: say "hi" 06:31
exp_evalbot r17826: OUTPUT[hi␤]
ahmadz kp6: say "cool"
exp_evalbot r17826: OUTPUT[cool␤]
moritz_ it's 'kp6-perl5.pl --secure | perl -Ilib-kp6-mp6-p5' 06:32
ahmadz thx will add it soon 06:33
moritz_ so "return" in closures is now "reduce" - erm, "make" 06:35
pugs_svnbot r17827 | azawawi++ | [runpugs] fixed html/css glitches 06:38
diff: dev.pugscode.org/changeset/17827
lambdabot Title: Changeset 17827 - Pugs - Trac
pugs_svnbot r17828 | azawawi++ | removed duplicate scripts 07:10
diff: dev.pugscode.org/changeset/17828
lambdabot Title: Changeset 17828 - Pugs - Trac
moritz_ @tell agentzh on perlcabal.org/syn/ you could point people to the open sourced "Perl 6 and Parrot Essentials" that lives in pugs+parrot repos 07:25
lambdabot Consider it noted.
moritz_ pugs: my $a = {1, 2}; say $a.WHAT 07:27
exp_evalbot OUTPUT[Block␤]
moritz_ pugs: my $a = {1 => 2}; say $a.WHAT
exp_evalbot OUTPUT[Hash␤]
pugs_svnbot r17829 | azawawi++ | [runpugs] updated p5 script to killall for current user 08:50
diff: dev.pugscode.org/changeset/17829
lambdabot Title: Changeset 17829 - Pugs - Trac
ruoso fglock, the name in the ast for 'a' <subrule> is concat, right? 09:52
fglock 'a' <subrule> is like: concat(const,subrule) 09:54
concat(const('a'),subrule('subrule'))
ruoso fglock, ok... 09:57
that deep recursion problem
is caused by the misimplementation of short circuits
they are used in both or and concat
I'm refactoring it to avoid the short circuits 09:58
fglock ok 10:10
pugs_svnbot r17830 | azawawi++ | [runpugs] client side command history implemented 10:26
diff: dev.pugscode.org/changeset/17830
lambdabot Title: Changeset 17830 - Pugs - Trac
pugs_svnbot r17831 | azawawi++ | [runpugs] update TODO 10:29
r17832 | fglock++ | [kp6] implemented VAR()
diff: dev.pugscode.org/changeset/17832
lambdabot Title: Changeset 17832 - Pugs - Trac
fglock kp6: VAR( %*ENV<a> ).STORE( 2 ); say %*ENV<a>; 10:45
exp_evalbot r17832: OUTPUT[2␤]
fglock yay!
pugs_svnbot r17833 | ruoso++ | [kp6] && and || implemented as short circuit... test 11 no longer recurses ad infinitum, but still fails... 11:02
diff: dev.pugscode.org/changeset/17833
lambdabot Title: Changeset 17833 - Pugs - Trac
pugs_svnbot r17834 | ruoso++ | [kp6] short circuit now works, but several unrelated grammar tests started to fail... 11:33
diff: dev.pugscode.org/changeset/17834
lambdabot Title: Changeset 17834 - Pugs - Trac
pugs_svnbot r17835 | ruoso++ | [kp6] some tests still failing... no clue of the problem yet 11:57
diff: dev.pugscode.org/changeset/17835
lambdabot Title: Changeset 17835 - Pugs - Trac
avar is VAR() something like tied() ? 12:26
fglock VAR() is an "escape" to access containers as normal objects 12:46
fglock hmm - yes, it's like tied() 12:59
avar Why can't containers just have object methods that would do an implicit VAR() ? 13:01
pugs_svnbot r17836 | fglock++ | [kp6] placeholder for token:sym<...>
diff: dev.pugscode.org/changeset/17836
lambdabot Title: Changeset 17836 - Pugs - Trac
fglock avar: some method names are common to containers and values, like .HOW 13:09
Limbic_Region salutations all 13:13
fglock Limbic_Region: hi
Limbic_Region fglock - I haven't seen you for sometime (my fault not yours). What's new in your exciting world? 13:15
fglock Limbic_Region: hmm - how much time? :) 13:16
Limbic_Region well, it seems like it has been a couple of months - 60 days 13:17
fglock Limbic_Region: in the last two months i've changed job, continent, 13:18
and kp6 is starting to look like Perl 6
Limbic_Region wow 13:19
SA to ??
fglock Lisbon 13:20
Limbic_Region with cog by chance? 13:21
pugs_svnbot r17837 | fglock++ | [kp6] added 'sym' to Token AST
diff: dev.pugscode.org/changeset/17837
lambdabot Title: Changeset 17837 - Pugs - Trac
fglock not with cog, but we meet at Lisbon-PM
Limbic_Region pretty significant life change, I hope all is well 13:22
fglock i´m fine :) 13:23
Limbic_Region so are you working with pmichaud regarding nqp 13:24
fglock Limbic_Region: some kp6 source code: svn.pugscode.org/pugs/v6/v6-KindaPe...l6/Hash.pm 13:25
lambdabot tinyurl.com/2ahbvn
fglock no, i haven't seen pmichaud for a while 13:26
Limbic_Region ok, well I am off for work - TTFN 13:27
pugs_svnbot r17838 | azawawi++ | [runpugs]page load/unload/events is now handled by jquery 13:30
r17838 | azawawi++ | [runpugs]page unload sends a :q when page unload is called (browser dependent)
r17838 | azawawi++ | [runpugs]startup script uses port setting from .webtermrc
diff: dev.pugscode.org/changeset/17838
lambdabot Title: Changeset 17838 - Pugs - Trac
pugs_svnbot r17839 | fglock++ | [kp6] token:sym<...> adds a Multi variant 13:39
diff: dev.pugscode.org/changeset/17839
lambdabot Title: Changeset 17839 - Pugs - Trac
pugs_svnbot r17840 | fglock++ | [kp6] moved method/token grammar to Grammar::Sub 13:51
diff: dev.pugscode.org/changeset/17840
lambdabot Title: Changeset 17840 - Pugs - Trac
fglock hmm - how to include 'sym' in the token signature? 13:58
something like: token ( where { $_ ~~ /xyz/ } ) { <sym> } 14:00
pugs_svnbot r17841 | ruoso++ | [kp6] fixed a bug, but the tests are still failing 14:21
diff: dev.pugscode.org/changeset/17841
lambdabot Title: Changeset 17841 - Pugs - Trac
pugs_svnbot r17842 | ruoso++ | [kp6] fixed a bug in the short circuit implementation. less tests are failing... but the recursions are back 14:30
diff: dev.pugscode.org/changeset/17842
lambdabot Title: Changeset 17842 - Pugs - Trac
pugs_svnbot r17843 | fglock++ | [kp6] Multi.add_variant 14:49
diff: dev.pugscode.org/changeset/17843
ahmadz hi andara 15:28
andara hi ahmadz 15:29
ahmadz how r u today? 15:29
andara ahmadz: I'm fine, though too often AFK ;-)
ahmadz right now im doing a replacement textarea => div 15:30
once im done i think we can put a stable tag on it
andara ahmadz: sounds great. Will you run that from your account for testing? 15:31
ahmadz it is currently running on my account
feather.perl6.nl:8096/runpugs/
lambdabot Title: Run Perl 6 Now -- in your browser!
ahmadz but im doing development work on it... testing for <div> instead of text area
andara ahmadz: sure, no problem. If you think it's stable, we'll replace the current front-end. I guess there's no rush... 15:33
ahmadz if things go well, tomorrow we'll have a stable with text highlighting ;-) 15:34
Juerd andara: Hi, a virtual server is ready to receive runpugs
andara: You can have port 80 there :)
Do you have tuits to move it? 15:35
andara Juerd: early October, not sooner I'm afraid
ahmadz hi juerd, thx for the upgrade ;-)
Juerd andara: That'd be great
andara Juerd: runpugs is so much more responsive now!
Juerd andara: Please let me know when you have the time 15:36
ahmadz juerd,andara: i can do it if you want
Juerd Fine with me, if andara agrees too 15:36
andara ahmadz: you're very welcome :-)
Juerd ahmadz: Let me set up an account for you 15:37
ahmadz: What is your feather account name?
ahmadz apache2+mod_deflate+runpugs+jquery+highlighter = cool runpugs ;-)
andara ahmadz, Juerd: but maybe I should keep the "ownership" (blame...)
ahmadz azawawi
fglock :pugs "abc".chars 15:38
andara Juerd, ahmadz: maybe we should make a "runpugs" account on the VM?
Juerd andara: Good idea
Created, uid is 1001 15:39
andara: Shall I create a login for you now, or in october?
andara Juerd: now is OK. You never know, I might find 30' here and there ... :-) 15:40
pugs_svnbot r17844 | ruoso++ | [kp6] forcerecompile 15:41
diff: dev.pugscode.org/changeset/17844
lambdabot Title: Changeset 17844 - Pugs - Trac
Juerd You both have root access through sudo
ahmadz andara: i was talking with moritz today and he told me that we can do safe_mode kp6 also through runpugs 15:42
andara: 'kp6-perl5.pl --secure | perl -Ilib-kp6-mp6-p5'
andara ahmadz: believe it or not, I had been thinking along those lines. Make a simple REPL for kp6, run in safe_mode ... 15:43
ahmadz andara: and run highlighted p6 examples or entered code inside... 15:44
Juerd pugs> print "foo"
fooBool::True 15:45
Would be nice if the return value had some visual distinction
Maybe italic, underlined, or bold
ahmadz dinner time...30min...cya... juerd+andara ty ;-) 15:46
andara ahmadz: I have to be off as well, maybe back online briefly tonight. 15:47
pugs_svnbot r17845 | fglock++ | [kp6] Str.chars 15:49
r17845 | fglock++ | Multi.add_token_variant( $code, $sym )
diff: dev.pugscode.org/changeset/17845
lambdabot Title: Changeset 17845 - Pugs - Trac
[particle] anybody here have tuits to add message throttling to svnbot? 16:08
oops
we're under threat of a kline on irc.perl.org 16:09
throttling to 2 messages per second should alleviate that threat
Juerd Seriously? 16:11
Are perl.org maintainers insane, or...?
[particle] don't ask me, we were warned more than once
Juerd There was this warning about "hammering" (once every few minutes) on svn.perl.org before
Now this
[particle] yep
we now have svnbot report only every 6 minutes 16:12
Juerd Maybe you can use trickle esaily 16:12
easily
[particle] iunno. the code is in pugs, and i think it's perl 6 with net::irc 16:13
Juerd trickle does anything that does socket()
But it takes kB/s rates, the manual doesn't say if they can be floating point 16:14
You'd need a really pretty low number of bytes to throttle for IRC...
Juerd Back to prehistoric bandwidth. 300 baud :| 16:14
[particle] heh, yeah
pugs_svnbot r17846 | fglock++ | [kp6] multi-tokens are indexed on 'sym' length
diff: dev.pugscode.org/changeset/17846
lambdabot Title: Changeset 17846 - Pugs - Trac
Juerd Sorry, I'm going to have to do something else now or I'll get pissed off again. 16:15
[particle] let's not have that
Juerd We could set up an IRC server on feather :)
integral I supoose if they let you, you could link a feather$N into irc.perl.org
Juerd integral: Still has to ditribute the messages to all other servers that have people in those channels 16:16
integral right, but it doens't go through the rate limiting stuff.
Juerd As I understand it, there is no rate limiting now, but a threat.
[particle] i don't know what those folks have set up for anti-spam 16:17
Juerd I interpret "threat" as: it's apparently not enough to trigger automatic mechanisms, but we're willing to waste tuits for it.
afk
[particle] i think svnbot may be kicked occasionally now at present, and somebody has to manually fix it 16:18
i really don't know the details, though
just got a visit from an ircop
pugs_svnbot r17847 | ruoso++ | [kp6] a severe bug found... assign is actually binding... but, most tests work now, only test grammar/11 is a bad failure 16:57
r17848 | fglock++ | [kp6] examples/token-sym.pl
diff: dev.pugscode.org/changeset/17848
lambdabot Title: Changeset 17848 - Pugs - Trac
pugs_svnbot r17849 | ruoso++ | [kp6] fixed a bug in "Constant subrule", metasyntax substr was just plain wrong... 17:11
diff: dev.pugscode.org/changeset/17849
lambdabot Title: Changeset 17849 - Pugs - Trac
ruoso hmmm 17:16
say "Hello!" is a syntax error to kp6-kp6
pugs_svnbot r17850 | fglock++ | [kp6] more token:sym dispatch 17:27
diff: dev.pugscode.org/changeset/17850
lambdabot Title: Changeset 17850 - Pugs - Trac
pugs_svnbot r17851 | fglock++ | [kp6] Bind hack 17:39
diff: dev.pugscode.org/changeset/17851
lambdabot Title: Changeset 17851 - Pugs - Trac
pugs_svnbot r17852 | fglock++ | [kp6] implemented dfa with longest-token in token:sym (Multi.pm) - needs more work... 18:07
diff: dev.pugscode.org/changeset/17852
lambdabot Title: Changeset 17852 - Pugs - Trac
ruoso ... called at lib-kp6-kp6-p5/KindaPerl6/Grammar.pm line 7365 18:18
pugs_svnbot r17853 | ruoso++ | [kp6] forcerecompile, extractrulecodeblock compatible with kp6 and mp6
diff: dev.pugscode.org/changeset/17853
lambdabot Title: Changeset 17853 - Pugs - Trac
ruoso has the feelling that it will be KindaHard to debug KindaPerl6 internals 18:19
ferreira I sent a proposal to obra about a perl6 microgrant. It is about writing light articles about Perl 6 operators to a general IT audience. The proposal is here: ferreira.nfshost.com/perl6/proposal.txt 19:20
lambdabot ferreira: You have 1 new message. '/msg lambdabot @messages' to read it.
ferreira @messages
lambdabot TimToady said 3d 21h 29m 20s ago: pugs does not yet implement Range objects, nor does it really treat * as anything other than Inf, so 0..* is pretty much doomed at the moment
ferreira I think I logged before but lambdabot did not tell me about this message. Is it possible? 19:21
TimToady you have to say something or lambdabot doesn't notice you 19:22
ferreira oh, that was it.
TimToady rejoining could just be a flapping connection or a netsplit 19:23
allbery_b I suspect handling that is just a side effect
contextual plugins don't hand;e anything other than straight talking
no login/out/join/part, no /action, etc.
ferreira TimToday: I see. I have seen your elaboration on ++ for strings. I am trying to write a prototype. So the former thing of trying to understand the string as a number is out? For example incrementing '0xFFFF' will result in '0xFFFG', right? 19:25
TimToady correct, convert it yourself first if you care
it was pointed out to me that 0a0 eventually gets to 0b0, and then we have trouble
and the new <!after '.'> constraint at least solves the 123.456 problem 19:26
as well as the extension problem
and the previous algorithm implied two scans of the string 19:27
(well, the final scan can be from the end of the string, really) 19:28
ferreira That means incrementing 'a.000.txt.gz' becomes 'b.000.txt.gz' because 'a' would be the incremented sequence. If someone wanted 'a.001.txt.gz', he must increment 'a.000' and append '.txt.gz' 19:29
TimToady that won't work either 19:29
a.000 => b.000
ferreira No, it's wrong. One must increment '000' and prepend 'a.' and append '.txt.gz' 19:30
Sorry, I said I said it wrong.
TimToady maybe we need a language that does interpolation. :)
dakkar the only times I've used the magic-inc in Perl 5 were to generate file names inside an array scan 19:31
I seem to recall that Perl 6 should have some kind of "iteration counter" somewhere. Do I recall worng?
ferreira By now, I wrote two weak articles, one about zip and other about ~. There are issues with boths. These issues are mainly unimplemented things in all current implementations.
For example, 1..* or (@a, *) which could be used in zip operations with infinite lists. 19:32
and the string increment as well. Should I include these even if people can't try code with these just now? 19:33
TimToady dakkar: you just say "for @list Z 0..* -> $value, $i {...}" to get an iteration counter
ferreira The articles are at ferreira.nfshost.com/perl6/zip.html and ferreira.nfshost.com/perl6/stitching.html
lambdabot Title: Yet Another Perl 6 Operator: Zip
dakkar TimToady: yes, much better than implicit counters 19:34
dakkar has been working too much with TT2 lately
TimToady (assuming Z is implemented correctly, which it's not yet)
there's another TimToady? 8-)
dakkar Template Toolkit ;) which has a handy 'loop' implicit variable. "handy" unless I'm running 5 nested loops... 19:35
wolverian dakkar, like $_? :)
dakkar wolverian: same exact problems, yes
ferreira pugs: for (1,2) Z <a,b> -> @pair { say "@pair" } 19:38
exp_evalbot OUTPUT[@pair␤]
ferreira pugs: for (1,2) Z <a,b> -> @pair { say "{@pair}" } 19:39
exp_evalbot OUTPUT[1 a,b␤]
ferreira pugs: for (1,2) Z <a,b> -> $pair { say "{pair}" }
exp_evalbot OUTPUT[␤]
ferreira pugs: for (1,2) Z <a,b> -> $pair { say "{$pair}" }
exp_evalbot OUTPUT[1 a,b␤]
TimToady pugs: for (1,2) Z <a b> -> $pair { say "{$pair}" } 19:41
exp_evalbot OUTPUT[1 a␤2 b␤]
TimToady but that's still incorrect by current spec
should flatten except in @@ context 19:42
and the parens should not be necessary by the current precedence tables 19:43
wolverian heh, I was thinking that was a tuple
damn you, haskell
TimToady it's supposed to be a Capture, which is flattened or not according to context 19:44
ferreira So, it should be (according to S02): for 1,2 | <a,b> -> $n, $x { say "$n - $x" } 19:45
wolverian oh, even without ;?
so parens are more than just precedence?
TimToady where did that | come from? 19:46
not to mention the , inside <> 19:47
ferreira It should have been Z
oops
TimToady wolverian: what ;?
you need ; inside zip(1,2; <a b>), but that's because it would otherwise not be able to distinguish the parts 19:48
a list infix operator like Z is of looser precedence than , 19:49
(see table in S03)
likewise the X operator, and all its variants
wolverian ah. thanks :)
ferreira But give me a clue. Should I mention the specified behavior in the articles even though there is no current compliant implementation? 19:50
TimToady why would I have a clue about that? 19:51
ferreira Because your arguments rock ;-) 19:52
TimToady well, it really depends on the purpose of your article. in any case I'd put a disclaimer on behavior that is already destined to disappear 19:53
wolverian "without you, I'm like a function without arguments"
TimToady I should just name all my arguments, and then I wouldn't have to keep positioning them... 19:54
ferreira The purpose of the article would be to tell the world about Perl 6 through mentioning the shiny new operators and also not quite so new, but reformed. 19:55
TimToady then you probably want to document it as it will be, not as it is
in that case the disclaimer goes the other direction
ferreira To tell the truth, it is the purpose of a series of micro-articles to be published in the ONLamp site blog.
Ok. I will remember the disclaimer.
TimToady or just fix pugs :) 19:56
ferreira Well, I think I am gonna try. But it will take longer than the articles to write.
Also (@x, *) is a special construction not implemented yet. It should be especially built as a list that watches its tail and reproduces the end element forever. Isn't it? 19:58
TimToady pugs: 1,2,3 Z 4,5,6 20:00
exp_evalbot OUTPUT[((1, 4), (2, 5), (3, 6))␤]
TimToady actually, looks like the precedence was already fixed
just needs to flatten by default
yes, ",*" isn't implemented
ferreira for 1,2 Z <a b> -> $a { say "$a" } 20:02
TimToady however, you can do $value xx * if you happen to know the final value
ferreira pugs: for 1,2 Z <a b> -> $a { say "$a" }
exp_evalbot OUTPUT[1 a␤2 b␤]
ferreira it flattens. What it does not is get the captures. 20:03
TimToady that should have newlines where it has spaces
it's shoving 1,'a' into $a together
if it were flattened, $a would get and then 'a'
s/get/get 1/
Z was implemented before we generalized slice context 20:04
ferreira pugs: for 1,2 Z <a b> -> $a, $b { say "a: '$a', b: '$b'" }
exp_evalbot OUTPUT[a: '1 a', b: '2 b'␤]
ferreira nothing gest into $b
s/gest/gets/
TimToady untrue, 2,b gets into $b 20:05
as your output shows
ferreira ok
TimToady it's not flattening like it should 20:06
amnesiac flattens TimToady
ferreira pugs: for 1,2 Z <a b> -> [$a, $b] { say "a: '$a', b: '$b'" }
exp_evalbot OUTPUT[*** ␤ Unexpected "[$"␤ expecting subroutine parameters, trait or block␤ at /tmp/E1zeYyLYZk line 1, column 20␤]
TimToady flatteny will get you nowhere
moritz_ amnesiac: don't do that, we need TimToady in all three dimensions ;) 20:07
TimToady pugs doesn't implement [] sigs yet either 20:07
ferreira This syntax -> [$a, $b] is not ready yet also.
amnesiac moritz_, true..
amnesiac unflattens TimToady and puts him on his previous state
TimToady best short term fix would be to make everything flatten, and we can add slice context in later
yow, my previous state was Georgia! 20:08
amnesiac are you from Gatech? 20:09
TimToady no, that's just where my plane landed on my way back from YAPC::EU
amnesiac oh
hah
TimToady my current state is California. it'd be a lot easier to put me on California because it's bigger. 20:11
not to mention closre 20:12
*closer
amnesiac haven't seend audrey in action lately...
what's she doin' now?
TimToady achieving a sustainable lifestyle
ferreira hey, but going from "Perl 6" to "Perl6" in docs is the opposite of a patch of chromatic. He bitched about that a lot. 20:13
Should not POD have a non-breakable space? Like TeX with 'Perl~6' or something?
amnesiac TimToady, good then
TimToady it has non-breakable space there
your display must not be displaying it correctly 20:14
ferreira Good old Gmail and Firefox
It is a Unicode character you introduced in between the words?
TimToady well, it's just the nobreak space in the Latin-1 range 20:15
U+00a0 or some such 20:16
pugs_svnbot r17854 | Darren_Duncan++ | ext/Muldis-DB/ : the whole Muldis DB core is now LGPLv3+ licensed
diff: dev.pugscode.org/changeset/17854
lambdabot Title: Changeset 17854 - Pugs - Trac
amnesiac TimToady, are you willing to go to Mexico again for a conference? :P 20:25
TimToady not today 20:27
amnesiac hah, I guess not today 20:28
TimToady siesta & 20:30
amnesiac TimToady, dormir :P
pugs_svnbot r17855 | Darren_Duncan++ | ext/Muldis-DB/ : this is the Perl 6 equivalent of what will end up on CPAN as Muldis::DB version 0.3.2 for Perl 5 20:37
diff: dev.pugscode.org/changeset/17855
lambdabot Title: Changeset 17855 - Pugs - Trac