On Sunday, 14 July 2013 at 03:52:34 UTC, Nick Sabalausky wrote:
From a user perspective, FF2 is actually my favorite browser,
as long as it's loaded up (or rather, bogged down) with all my
usual extensions.
Eh, the UI was indeed pretty ok. Actually even modern firefox can
look pretty similar
Would it be possible to add links to national dlang communities
to the bottom of the page to make comers easier to find
information and help on their native language?
On Wednesday, 10 July 2013 at 17:25:31 UTC, Sean Kelly wrote:
On Jul 9, 2013, at 11:12 AM, Paulo Pinto pj...@progtools.org
wrote:
A bit off-topic, but well worth reading,
http://sealedabstract.com/rants/why-mobile-web-apps-are-slow/
Oh, regarding ObjC (and I'll qualify this by saying that
Am Sat, 13 Jul 2013 22:37:45 +0200
schrieb Robert jfanati...@gmx.at:
But one comment though: Do you really need string mixins? I
think
Signal!int mysignal; is a much nicer syntax in D than using
I agree and you don't need the string mixin, it is just for
convenience. The signal
Am 13.07.2013 18:41, schrieb bearophile:
Benjamin Thaut:
I also wanted to mention the ListAvailableCtors template which is a
nice addition in case there is no constructor available to be called
with the given arguments. It will generate a list of all aviable ctors
with the types of its
On 2013-07-14 05:19, Val Markovic wrote:
I just watched Andrei's /Quo Vadis /talk from this year's DConf and I
liked it a lot. I strongly agreed with his notion that the D community
needs to embrace operational professionalism; I've been thinking along
those same lines for months and it's the
Am 13.07.2013 18:49, schrieb bearophile:
Benjamin Thaut:
Yes the assignment in this(DefaultCtor) is needed, because the
construction process of a D object is defined as:
OK.
The debugging values are needed because most debuggers won't be able
to evaluate properties while debugging.
OK.
Am 14.07.2013 09:56, schrieb SomeDude:
On Wednesday, 10 July 2013 at 17:25:31 UTC, Sean Kelly wrote:
On Jul 9, 2013, at 11:12 AM, Paulo Pinto pj...@progtools.org wrote:
A bit off-topic, but well worth reading,
http://sealedabstract.com/rants/why-mobile-web-apps-are-slow/
Oh, regarding ObjC
Am 13.07.2013 17:15, schrieb bearophile:
(Sorry, this post has gone in this newsgroup by mistake, but it's a
small mistake.)
To change and understand your code a bit (now the ComposeClass
constructor is a template) I have removed some of the tests and debug
code, but they should be added back
Am 13.07.2013 12:35, schrieb bearophile:
The resulting X86 asm:
__D4test12addParticlesFNaNbxS4test8ParticlexS4test8ParticleZS4test8Particle:
pushl%ebp
movl%esp, %ebp
andl$-16, %esp
subl$16, %esp
movaps40(%ebp), %xmm0
movaps56(%ebp), %xmm1
Benjamin Thaut:
I just noticed that this still does not work. Even with dmd
2.063 I get the error message:
main.d(28): Error: template
main.ComposeClass!(Object).ComposeClass.__ctor(Targs...)(Targs
args) conflicts with constructor
main.ComposeClass!(Object).ComposeClass.this at main.d(20)
Benjamin Thaut:
With my version you will instantly know what ctors are
available and you don't have to go look it up in the sourcecode.
Right. On the other hand this is what happens when you call any
constructor or any overloaded function. So I don't think it's so
important.
One possible
Benjamin Thaut:
http://d.puremagic.com/issues/show_bug.cgi?id=10226
I see there are codegen inefficiencies.
Until dmd uses the XMM registers correctly it doesn't make much
sense to add a special calling convetion for this purpose.
I don't agree, because:
- Even if DMD codegen is far from
On Sunday, 14 July 2013 at 12:28:48 UTC, Dicebot wrote:
On Saturday, 13 July 2013 at 12:47:28 UTC, bearophile wrote:
...
P.S. but reading scoped docs I got no idea if this is a legal
safe usage.
Calling convention optimizations can probably be done during
whole program optimization, which 1) usable for
computation-intensive applications anyway, 2) guarantees
invisibility of those fastcall functions to external code so
there's no incompatibility.
Benjamin Thaut:
Trying to use ClassCompose in my code I have had some problems
caused by const classes and ClassCompose dtor. Maybe such dtor
(and isDestructed) can be versioned out for composed-in classes
that only contain values...
Can you give an example for that?
As a simple example
On Saturday, 13 July 2013 at 12:47:28 UTC, bearophile wrote:
...
Hm, actually naive scoped usage seems to work for me:
---
import std.typecons;
class B
{
byte a;
}
class A
{
typeof(scoped!B()) b = void;
this()
{
Jacob Carlborg:
I completely agree with you and I think it madness that the
site is written in Ddoc. But apparently Walter and company
loves it.
Do you like this? It's made with Python:
http://sphinx-doc.org/
Bye,
bearophile
Kagamin:
Calling convention optimizations can probably be done during
whole program optimization, which 1) usable for
computation-intensive applications anyway, 2) guarantees
invisibility of those fastcall functions to external code so
there's no incompatibility.
In D you can tag a free
Am 14.07.2013 14:03, schrieb bearophile:
Benjamin Thaut:
I just noticed that this still does not work. Even with dmd 2.063 I
get the error message:
main.d(28): Error: template
main.ComposeClass!(Object).ComposeClass.__ctor(Targs...)(Targs args)
conflicts with constructor
Am 14.07.2013 14:25, schrieb bearophile:
Benjamin Thaut:
Trying to use ClassCompose in my code I have had some problems caused
by const classes and ClassCompose dtor. Maybe such dtor
(and isDestructed) can be versioned out for composed-in classes
that only contain values...
Can you give an
Am 14.07.2013 14:11, schrieb bearophile:
Benjamin Thaut:
http://d.puremagic.com/issues/show_bug.cgi?id=10226
I see there are codegen inefficiencies.
Until dmd uses the XMM registers correctly it doesn't make much sense
to add a special calling convetion for this purpose.
I don't agree,
On Sunday, 14 July 2013 at 04:56:46 UTC, Val Markovic wrote:
...
Thanks for the input!
I do personally agree that official web page is one of most
lacking areas of D public image. Maybe that is because there are
no people among core developers specializing on web development
(or am I
Benjamin Thaut:
I just wanted to say that there are currently bigger fish to
fry then micro optimization through calling convetions. (GC,
allocators, all the bugs...)
I understand and I agree. On the other hand I think there are
things that (if desired) it's better to introduce sooner,
Benjamin Thaut:
Does this actually work for you?
It seems to work. (But in that little program I have found two
new unrelated compiler bugs that don't allow me to compile the
program in an useful way. I have reported both of them in
Bugzilla and one of them has now a patch, so probably I
Am 14.07.2013 16:25, schrieb bearophile:
Benjamin Thaut:
Does this actually work for you?
It seems to work. (But in that little program I have found two new
unrelated compiler bugs that don't allow me to compile the program in an
useful way. I have reported both of them in Bugzilla and one
Benjamin Thaut:
Can you give a link to the two respective bugs please?
I think they are:
http://d.puremagic.com/issues/show_bug.cgi?id=10629
http://d.puremagic.com/issues/show_bug.cgi?id=10632
The first has already a patch, and probably the second is a
regression.
Bye,
bearophile
Dicebot:
Hm, actually naive scoped usage seems to work for me:
---
import std.typecons;
class B
{
byte a;
}
class A
{
typeof(scoped!B()) b = void;
this()
{
b = scoped!B();
}
}
Good. If I
The warning comes from:
http://dlang.org/changelog.html#staticfields
Namespace:
The warning comes from:
http://dlang.org/changelog.html#staticfields
But is void an initializer?
Bye,
bearophile
On Sunday, 14 July 2013 at 15:28:26 UTC, bearophile wrote:
Namespace:
The warning comes from:
http://dlang.org/changelog.html#staticfields
But is void an initializer?
Bye,
bearophile
Seems so, but I don't know why. Anyway, it's obviously wrong, you
should fill a bug report.
On Sunday, 14 July 2013 at 15:28:26 UTC, bearophile wrote:
Namespace:
The warning comes from:
http://dlang.org/changelog.html#staticfields
But is void an initializer?
Bye,
bearophile
Technically - yes, but I think it should be an exclusion from
general rules mentioned there because of
On Sunday, 14 July 2013 at 15:17:43 UTC, bearophile wrote:
test.d(4): Error: slice x[] is not mutable
This is almost 100% a bug. I have played a bit with this snippet
and seems like void initialization breaks usual rule that you can
cook const/immutable field in constructor (which is kind of
On 07/14/13 18:24, Dicebot wrote:
class A
{
// immutable int x = void; // works not
`void` is special - yes. But keep in mind that this currently does
not actually do what it intuitively appears to, and what the code
posted in this thread apparently expects. IOW void-initialization
of
Ugh, rly? As far as I understand spec it should work like this:
T x; // sets x to T.init
T x = void; // don't initialize x at all, leave garbage
What hole in .init are you referring to?
On Sunday, 14 July 2013 at 16:49:13 UTC, Artur Skawina wrote:
...
Hello,
I would like to be able to make a regex from a text file :
[code]
version(Tango) extern (C) int printf(char *, ...);
import std.stdio;
import std.regex;
import std.file;
import std.format;
int main(char[][] args)
{
string fl = readText(testregexd.txt);
auto m = match(fl,
what if you change your regex to:
regex(`n=(hello|goodbye);?`)
Also, would be appreciated if you could post these questions to d.learn.
On 07/14/13 18:59, Dicebot wrote:
Ugh, rly? As far as I understand spec it should work like this:
T x; // sets x to T.init
T x = void; // don't initialize x at all, leave garbage
void-initialization of aggregate fields does *not* actually disable
initialization:
struct S {
T x =
Still can't find this in the spec but I see what you are getting
at, makes sense. I think this actually is yet another case where
CTFE-able default constructor for structs would have been a major
win.
On Sunday, 14 July 2013 at 17:41:35 UTC, Artur Skawina wrote:
On 07/14/13 18:59, Dicebot
On 07/14/2013 07:51 PM, Dicebot wrote:
Still can't find this in the spec but I see what you are getting at,
makes sense. ...
(This is a QOI issue.)
On Sunday, 14 July 2013 at 18:12:07 UTC, Timon Gehr wrote:
On 07/14/2013 07:51 PM, Dicebot wrote:
Still can't find this in the spec but I see what you are
getting at,
makes sense. ...
(This is a QOI issue.)
Is it really? I see certain conflicting interests between
bit-wise T.init copy for
On Saturday, 13 July 2013 at 15:20:44 UTC, Russel Winder wrote:
Well most people use X.Y.Z-alpha-N for bleeding edge releases,
X.Y.Z-beta-N for getting close to a release, X.Y.Z-RC-N for
actual
release candidates, the last of which becomes the release
simply by
relabelling to X.Y.Z without
On 7/14/2013 2:30 AM, Jacob Carlborg wrote:
I think it madness that the site is written in Ddoc.
Different, sure. Madness - why?
On 2013-07-14 14:34, bearophile wrote:
Do you like this? It's made with Python:
http://sphinx-doc.org/
Ddoc in it self is not that bad, for documenting code. It's just that I
would never create a web site using it. I would go with a server side
script. I prefer Ruby on Rails for that.
--
On 7/14/2013 6:49 AM, Dicebot wrote:
But maintaining
whole stuff via git repo + makefiles is definitely cumbersome, no idea why that
was chosen.
1. github is how the entire rest of D is maintained, it would be strange if the
website was handled via some completely different system.
2.
This discussion seems to have gone off track.
I pointed out three things that I thought should be addressed to ease the
use of contributing to the dlang.org site (and other D-project components),
and those three things were: a) lower response latency on pull requests, b)
better documentation of
On 7/14/2013 2:18 PM, Val Markovic wrote:
I pointed out three things that I thought should be addressed to ease the use of
contributing to the dlang.org http://dlang.org site (and other D-project
components), and those three things were: a) lower response latency on pull
requests, b) better
On 2013-07-14, 19:30, Larry wrote:
Hello,
I would like to be able to make a regex from a text file :
[code]
version(Tango) extern (C) int printf(char *, ...);
import std.stdio;
import std.regex;
import std.file;
import std.format;
int main(char[][] args)
{
string fl =
One of the things we should add to the new README is a tip
pointing people toward the DDOC = macro in std.ddoc.
That's the skeleton html for the website and is pretty plain.
On Sun, Jul 14, 2013 at 2:37 PM, Walter Bright
newshou...@digitalmars.comwrote:
I agree with your three points. I'll add that anyone can do a pull request
to address any/all of these.
How can someone send a pull request to address the long latency of
responding to pull requests? The other
On 7/14/2013 2:59 PM, Val Markovic wrote:
How can someone send a pull request to address the long latency of responding to
pull requests?
There are 13 open PRs, and about 335 pulled ones.
While we can and must do better, I don't think the situation is as dire as you
suggest.
There are
On Sun, Jul 14, 2013 at 3:34 PM, Walter Bright
newshou...@digitalmars.comwrote:
While we can and must do better, I don't think the situation is as dire as
you suggest.
I think it's more dire than you realize, but I could be wrong. Here are a
few links to pull requests on dlang.org that seem
On Fri, Jul 12, 2013 at 9:23 PM, Walter Bright
newshou...@digitalmars.comwrote:
On 7/12/2013 5:00 PM, Timothee Cour wrote:
Let's put it another way: if I or someone else made a pull request for
CTFE
exec, would it have a chance of being accepted?
A big problem with it would be the
On Sat, Jul 13, 2013 at 9:05 AM, Ary Borenszweig a...@esperanto.org.arwrote:
On 7/12/13 5:42 PM, Tofu Ninja wrote:
So I had an idea recently, wouldn't it be cool to have the ability to
call an executable at compile time and capture its output. Something
like the string imports but instead of
On Saturday, 6 July 2013 at 01:33:09 UTC, dnewbie wrote:
Hi. It's time for the annual poll of the year. Please vote
http://www.easypolls.net/poll.html?p=51d766e4e4b03d6de547a64b
Here are the results.
2012 2013
1 year 27% 21%
1-2 years 25% 27%
3-5 years 28% 31%
6-10
On 7/14/13 5:20 PM, Walter Bright wrote:
On 7/14/2013 2:30 AM, Jacob Carlborg wrote:
I think it madness that the site is written in Ddoc.
Different, sure. Madness - why?
If you look at for example this file:
https://github.com/D-Programming-Language/dlang.org/blob/master/lex.dd
All I see
On 7/14/2013 7:19 PM, Ary Borenszweig wrote:
On 7/14/13 5:20 PM, Walter Bright wrote:
On 7/14/2013 2:30 AM, Jacob Carlborg wrote:
I think it madness that the site is written in Ddoc.
Different, sure. Madness - why?
If you look at for example this file:
I was porting some C code to D the other day. It had a switch-case
statement in it, and to my surprise the compiler complained about a case
that could fall through unintentionally. Lo and behold, it was a bug!
I was so happy to see this happen. It really made my day.
So I wanted to drop by
On 2013-07-13 20:53, Leandro Motta Barros wrote:
Hey, thanks! This makes sense :-)
Am I now wondering... how safe, portable and future proof would this
be? If some future version of D implements a garbage collector capable
of moving objects around the heap, I could get in trouble, right?
I assume that you template ends up creating a dummy interface
though and this isn't really acceptable.
Yes, it does. Once ':' is typed, some inheritance must occur.
Why isn't a dummy interface acceptable?
On 2013-07-14, 07:00, JS wrote:
I need to conditionally inherit:
interface A(T) : conditionallyInherit!(isBasicType!T, B);
A!(double) will inherit B but A!(mytype) won't.
template conditionallyInherit(bool choice, T...) {
static if (choice) {
alias conditionallyInherit = T;
On 2013-07-14, 07:40, JS wrote:
On Sunday, 14 July 2013 at 05:30:57 UTC, lomereiter wrote:
On Sunday, 14 July 2013 at 05:04:37 UTC, JS wrote:
and while I'm at it I need to conditionally constrain types.
interface A(T) where(!isBasicType!T, (T : B));
which is suppose to require T to inherit
I would like to do something like
enum e
{
@(string) p,
@(int) i
}
class a
{
mixin(generatePropertiesFromEnum!e);
}
which would produce the result
interface a
{
@property string p();
@property int i();
}
I can generate the properties without issue but I can't seem to
attach
that should be interface a instead of class a.
On Sunday, 14 July 2013 at 12:33:07 UTC, JS wrote:
I would like to do something like
...
Looks like a grammar issue. UDA's are supposed to be attached to
any symbol declaration as far as I understand, which enum members
definitely are. Probably worth bugzilla entry.
On 07/14/2013 11:37 AM, lomereiter wrote:
I assume that you template ends up creating a dummy interface though
and this isn't really acceptable.
Yes, it does. Once ':' is typed, some inheritance must occur.
Nope.
template Seq(T...){ alias T Seq; }
class C : Seq!(){ }
Why isn't a dummy
On Sunday, 14 July 2013 at 13:38:41 UTC, Dicebot wrote:
On Sunday, 14 July 2013 at 12:33:07 UTC, JS wrote:
I would like to do something like
...
Looks like a grammar issue. UDA's are supposed to be attached
to any symbol declaration as far as I understand, which enum
members definitely are.
On 07/11/2013 05:58 AM, Chris wrote:
I have a DLL written in D I load into a Python application via ctypes
like so:
lib = CDLL(mydll)
The DLL loads and can be used no problem. However, once the DLL is
discarded of by the program, the program either doesn't react or
crashes. I still haven't
The documentation of GC.addRoot() (mentioned by Simen), contains this
interesting piece of example code:
// Also ensure that a moving collector does not relocate
// the object.
GC.setAttr(cast(void*)context, GC.BlkAttr.NO_MOVE);
Looks like we *already* have the way to pin objects to
I'm trying to interact with a process using std.process and
redirected stdin/stdout/stderr.
What would be the recommended way?
For example:
auto pipes=pipeShell(myprocess,Redirect.all);
while(true){
pipes.stdin.rawWrite(some_command);
foreach (line; pipes.stdout.byLine) {
//do
It would be nice to be able to use enums in a hierarchical way:
enum colors
{
enum Red { RedOrange, ... }
enum Green { GreenBlue, ...}
enum Blue { BlueYellow, ... }
...
}
which would be the same as the flattened version,
enum colors
{
Red, RedOrange, ..., Green, GreenBlue,
BTW, the usefulness is to group sub-enums into the same range.
This would make it easy/efficient to branch over a range in the
enum:
if (v in colors.Red) { v is a color in red }
instead of
if (v is color.Red || v is color.RedOrange || ...)
On Monday, 15 July 2013 at 04:27:42 UTC, JS wrote:
BTW, the usefulness is to group sub-enums into the same range.
This would make it easy/efficient to branch over a range in the
enum:
if (v in colors.Red) { v is a color in red }
instead of
if (v is color.Red || v is color.RedOrange || ...)
http://d.puremagic.com/issues/show_bug.cgi?id=6320
yebblies yebbl...@gmail.com changed:
What|Removed |Added
Status|ASSIGNED|RESOLVED
http://d.puremagic.com/issues/show_bug.cgi?id=10022
yebblies yebbl...@gmail.com changed:
What|Removed |Added
Status|NEW |RESOLVED
http://d.puremagic.com/issues/show_bug.cgi?id=8096
yebblies yebbl...@gmail.com changed:
What|Removed |Added
Status|NEW |RESOLVED
http://d.puremagic.com/issues/show_bug.cgi?id=6169
yebblies yebbl...@gmail.com changed:
What|Removed |Added
Status|REOPENED|RESOLVED
http://d.puremagic.com/issues/show_bug.cgi?id=10141
Kenji Hara k.hara...@gmail.com changed:
What|Removed |Added
Keywords||pull
--- Comment #6
http://d.puremagic.com/issues/show_bug.cgi?id=6320
Kenji Hara k.hara...@gmail.com changed:
What|Removed |Added
Resolution|WORKSFORME |DUPLICATE
--- Comment
http://d.puremagic.com/issues/show_bug.cgi?id=10254
--- Comment #6 from Kenji Hara k.hara...@gmail.com 2013-07-13 23:52:46 PDT ---
*** Issue 6320 has been marked as a duplicate of this issue. ***
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are
http://d.puremagic.com/issues/show_bug.cgi?id=10607
--- Comment #2 from github-bugzi...@puremagic.com 2013-07-14 01:56:18 PDT ---
Commit pushed to master at https://github.com/D-Programming-Language/phobos
http://d.puremagic.com/issues/show_bug.cgi?id=10621
--- Comment #2 from github-bugzi...@puremagic.com 2013-07-14 01:56:38 PDT ---
Commit pushed to master at https://github.com/D-Programming-Language/phobos
http://d.puremagic.com/issues/show_bug.cgi?id=10637
Summary: minimallyInitializedArray: postblit on
non-initialized...
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Severity: normal
http://d.puremagic.com/issues/show_bug.cgi?id=6829
--- Comment #34 from Iain Buclaw ibuc...@ubuntu.com 2013-07-14 02:47:24 PDT
---
(In reply to comment #33)
Interesting. Running dmd -m32 -O works, produces the rotate instructions.
For some reason, I still can't coax gdc to do this. I've
http://d.puremagic.com/issues/show_bug.cgi?id=10589
monarchdo...@gmail.com changed:
What|Removed |Added
Component|druntime|websites
http://d.puremagic.com/issues/show_bug.cgi?id=10589
--- Comment #5 from Rainer Schuetze r.sagita...@gmx.de 2013-07-14 03:32:13
PDT ---
(In reply to comment #4)
Ok. I have just some tiny questions left, if you'd care to instruct me:
1. Why does the Place at beginning scheme start at 2K
http://d.puremagic.com/issues/show_bug.cgi?id=9803
monarchdo...@gmail.com changed:
What|Removed |Added
Status|NEW |ASSIGNED
http://d.puremagic.com/issues/show_bug.cgi?id=10637
monarchdo...@gmail.com changed:
What|Removed |Added
Status|NEW |ASSIGNED
http://d.puremagic.com/issues/show_bug.cgi?id=8860
kekeni...@yahoo.co.jp changed:
What|Removed |Added
Status|NEW |RESOLVED
Resolution|
http://d.puremagic.com/issues/show_bug.cgi?id=10596
kekeni...@yahoo.co.jp changed:
What|Removed |Added
CC||kekeni...@yahoo.co.jp
---
http://d.puremagic.com/issues/show_bug.cgi?id=10638
Summary: Assignment can't be used as a condition
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
http://d.puremagic.com/issues/show_bug.cgi?id=10638
mailnew4s...@gmail.com changed:
What|Removed |Added
CC||mailnew4s...@gmail.com
http://d.puremagic.com/issues/show_bug.cgi?id=10638
bearophile_h...@eml.cc changed:
What|Removed |Added
CC||bearophile_h...@eml.cc
---
http://d.puremagic.com/issues/show_bug.cgi?id=10639
Summary: Win64: wrong optimizer codegen with struct literal
with complex fields
Product: D
Version: D2
Platform: x86_64
OS/Version: Windows
Status: NEW
http://d.puremagic.com/issues/show_bug.cgi?id=9510
Stewart Gordon s...@iname.com changed:
What|Removed |Added
CC||s...@iname.com
http://d.puremagic.com/issues/show_bug.cgi?id=10524
yebblies yebbl...@gmail.com changed:
What|Removed |Added
CC||yebbl...@gmail.com
---
http://d.puremagic.com/issues/show_bug.cgi?id=10524
bearophile_h...@eml.cc changed:
What|Removed |Added
CC||bearophile_h...@eml.cc
---
http://d.puremagic.com/issues/show_bug.cgi?id=10640
Summary: DMD git-head creates instantly segfaulting executables
on Linux 64
Product: D
Version: D2
Platform: x86_64
OS/Version: Linux
Status: NEW
http://d.puremagic.com/issues/show_bug.cgi?id=6829
--- Comment #35 from hst...@quickfur.ath.cx 2013-07-14 07:45:05 PDT ---
Interestingly, translating the code into C and compiling with gcc 4.8.1 does
produce the rotate instructions. But compiling the D version with gdc 4.8
doesn't. I've no idea
http://d.puremagic.com/issues/show_bug.cgi?id=6829
--- Comment #36 from Iain Buclaw ibuc...@ubuntu.com 2013-07-14 08:10:23 PDT
---
(In reply to comment #35)
Interestingly, translating the code into C and compiling with gcc 4.8.1 does
produce the rotate instructions. But compiling the D
1 - 100 of 114 matches
Mail list logo