I just implemented the concept described in that post in my web.d,
and earlier in the week, implemented automatic Javascript bindings
generation.
Here's a live demo:
http://arsdnet.net/apidemo.html
This is the server side implementation:
http://arsdnet.net/apidemo.d
Do not adjust your text
Oh btw, the returned errors kick ass. Exceptions cross the
divide pretty well intact - it just works, and the messages
(in firefox at least) are pretty awesome. Try making errors too!
Wow... actually, the names aren't always right, including in the
example.
I used a ParameterNamesOf!(), written by a newsgroup member a while
ago (I don't remember who), which cleverly uses typeof().stringof
and parses it to extract parameter names.
Strangely though, dmd seems to use the
On 16-apr-11, at 22:49, Timon Gehr wrote:
[...]
The problem is, that inside a non-leaky pure function the general
case for dynamic
allocations might be just as complicated as in other parts of the
program.
indeed, this is exactly what I wanted to write, yes in some cases, one
can get
Hello!
My first post to this newsgroup was a little bit more than 6 months ago
and today I've decided to leave D and use C(P)ython + Qt for our
open-source project of writing multi-platform desktop application.
The D community is very nice and supportive, Walter, Andrei co. are
working hard,
David Wang wrote:
Hi, all,
I've download the latest dmd druntime phobos from gitHub.com;
I copied them into a 32bit folder and a 64bit folder; I combined them
separately into 32bit version and 64bit.
1). 32bit for dmd druntime phobos -- passed.
2). 64bit for dmd druntime -- passed; but
I am having some troubles with D newsgroups.
Through Reddit I've found a kind of little online book, 13 HTML pages, about C
and other languages:
http://www-cs-students.stanford.edu/~blynn/c/index.html
Instead, I was enchanted by Eiffel, a language so clean that its sterile. I
became a rabid
Fawzi Mohamed wrote:
On 16-apr-11, at 22:49, Timon Gehr wrote:
[...]
The problem is, that inside a non-leaky pure function the general case
for dynamic
allocations might be just as complicated as in other parts of the program.
Yes, but that only matters if that function is both extremely
On 04/16/11 22:41, Spacen Jasset wrote:
So what do people currently use for C and C++ then?
Not sure, but both #cpp and #cplusplus seem to be popular.
As for D, I think we have settled down in #d_lang.
On 4/17/11, Don nos...@nospam.com wrote:
In this particular case, what's happened is that one of the largest
structural problems inside the compiler has been fixed. This fixed a
dozen of the nastiest bugs in Bugzilla..
That sounds delicious! :
On 2011-04-17 05:22:10 -0400, Fawzi Mohamed fa...@gmx.ch said:
All this comes back again to having several pools, showing how useful
such a primitive is.
Speaking of rethinking the GC and its primitives, is there a way
currently to tell the GC to track pointers to a manually allocated
block
On Wed, Apr 13, 2011 at 07:37:08PM -0500, Andrei Alexandrescu wrote:
This is very close already! Two things if you get to work on this for
the weekend:
Try it now:
http://arsdnet.net/d-web-site/std_algorithm2.html
Getting the console window to resize was a bit of a trick.. actually, the
Gour-Gadadhara Dasa Wrote:
One thing, go hang yourself. We don't like loser talk from people who only
waste our time. Everyone agrees here D2 is the right tool for the job. Why did
you come here to rant about D?
- G.W.
new version of javascript up:
http://arsdnet.net/d-web-site/std_algorithm2.html
Don wrote:
The problem is, that inside a non-leaky pure function the general case
for dynamic
allocations might be just as complicated as in other parts of the program.
Yes, but that only matters if that function is both extremely
memory-inefficient AND long-lived. In which case you can
Gour, please disregard the troll above.
If you're going with Python and Qt, I'd wholeheartedly recommend this
book: http://www.qtrac.eu/pyqtbook.html
Making GUIs with PyQT is dead simple. And Nokia already has that new
LGPL(I think?)-licensed binding in place - http://www.pyside.org. So
your
Am 17.04.2011 20:18, schrieb Gary Whatmore:
Gour-Gadadhara Dasa Wrote:
One thing, go hang yourself. We don't like loser talk from people who only
waste our time. Everyone agrees here D2 is the right tool for the job. Why
did you come here to rant about D?
- G.W.
Do you have a split
Dmitry Olshansky Wrote:
On 16.04.2011 22:39, dsimcha wrote:
I'm reconsidering the naming of std.parallelism. The name is catchy,
but perhaps too general. std.parallelism currently targets SMP
parallelism. In the future it would be nice for Phobos to target SIMD
parallelism and
Andrej Mitrovic Wrote:
Gour, please disregard the troll above.
If you're going with Python and Qt, I'd wholeheartedly recommend this
book: http://www.qtrac.eu/pyqtbook.html
Making GUIs with PyQT is dead simple. And Nokia already has that new
LGPL(I think?)-licensed binding in place -
Don Wrote:
Tomek Sowiñski wrote:
I'm far from being a GC expert but I think Java having identified such
cases with escape analysis just puts locally allocated objects on the stack.
That works for the non-leaky function itself, but it doesn't help for
the functions it calls.
It'd reduce
pfff... I really don't know what to say about C++0x. Everyday I fall
more in love with D. To know that I'll have to spend time learning
all the new things in C++ just depresses me. Sure, there are some
nice features, but I rather spend that time on improving my D and
Python. Life is too short,
D2 is ready. There are some compiler bugs that might cause problems,
but they will go away hopefully soon. And I don't think GUI
programming is the first reason people come to D.
Adam D. Ruppe:
new version of javascript up:
http://arsdnet.net/d-web-site/std_algorithm2.html
I suggest to add a spinning circle for the compilation wait (see Ideone site
too).
Some comments on the code examples:
- The second example for reduce(), the example of group() and minCount(), the
On 4/17/2011 11:18 AM, Gary Whatmore wrote:
One thing, go hang yourself. We[...]
Gour-Gadadhara Dasa has done nothing to merit such inexcusable rudeness.
I appreciate his polite and thoughtful post about why D is not the right
solution for his needs at this time.
I'm not defending other languages, I'm recommending them. I'm also
recommending D when its appropriate. But nobody is forced to use just
one programming language. I use at least half a dozen languages
throughout my average week; C, C++, Python, Delphi (rarely), D, AHK,
batch (hehe, ok that one
On Sun, 17 Apr 2011 20:26:49 +0200
Andrej Mitrovic andrej.mitrov...@gmail.com wrote:
Gour, please disregard the troll above.
:-)
If you're going with Python and Qt, I'd wholeheartedly recommend this
book: http://www.qtrac.eu/pyqtbook.html
Yeah...I just got reply from Mark if he is planning
On 04/17/2011 01:22 PM, Adam D. Ruppe wrote:
new version of javascript up:
http://arsdnet.net/d-web-site/std_algorithm2.html
One more thing: make sure you solve potential cross-site scripting that
may occur, and prepare for seeing a fair amount of extra traffic. In the
long run we'll prepare
On 04/17/2011 01:22 PM, Adam D. Ruppe wrote:
new version of javascript up:
http://arsdnet.net/d-web-site/std_algorithm2.html
Great. I think this looks adequate now and ready for integration into
d-programming-language.org.
Adam, could you please put together a pull request on github?
I'd
On 04/17/2011 02:00 PM, bearophile wrote:
Adam D. Ruppe:
new version of javascript up:
http://arsdnet.net/d-web-site/std_algorithm2.html
I suggest to add a spinning circle for the compilation wait (see Ideone site
too).
Probably we're good to go without that, but it'll help once the
Andrei Alexandrescu wrote:
Adam, could you please put together a pull request on github?
I've gotta figure out how that works...
I'd also appreciate if you sent my way a simple script that scrapes
the HTML for all sample code so we can work on making them work.
Heh, what a coincidence. I
Andrei Alexandrescu wrote:
One more thing: make sure you solve potential cross-site scripting
that may occur
I don't think any are possible - I always escape input and output,
and if something does get through, it's on a different domain so
the browser's cross domain restriction will keep it
On Sun, 17 Apr 2011 13:51:49 -0500
Caligo iteronve...@gmail.com wrote:
And I don't think GUI programming is the first reason people come to
D.
Well, http://d-programming-language.org/ page says: D is a
multi-paradigm programming language that combines a principled
approach with a focus on
On 04/17/2011 02:29 PM, Adam D. Ruppe wrote:
Andrei Alexandrescu wrote:
Adam, could you please put together a pull request on github?
I've gotta figure out how that works...
I'd also appreciate if you sent my way a simple script that scrapes
the HTML for all sample code so we can work on
bearophile wrote:
I suggest to add a spinning circle for the compilation wait (see
Ideone site too).
Am I actually the only person in the world who *hates* those things?
I might add it later though.
On 04/17/2011 02:35 PM, Adam D. Ruppe wrote:
bearophile wrote:
I suggest to add a spinning circle for the compilation wait (see
Ideone site too).
Am I actually the only person in the world who *hates* those things?
I might add it later though.
I think adding the text to the Running...\n as
On Apr 18, 11 02:22, Adam D. Ruppe wrote:
new version of javascript up:
http://arsdnet.net/d-web-site/std_algorithm2.html
There are some minor styling bugs. I've only tested it on Chrome 10.
For Example: code blocks:
1. Press Try Now, then Cancel - the code block becomes bold.
2. Click Try
On 04/17/2011 02:29 PM, Adam D. Ruppe wrote:
Andrei Alexandrescu wrote:
Adam, could you please put together a pull request on github?
I've gotta figure out how that works...
Oh, and I think learning git/github is a huge net gain outside of any
particular project. I warmly recommend it.
Jason House wrote:
Don Wrote:
Tomek Sowiñski wrote:
I'm far from being a GC expert but I think Java having identified such cases
with escape analysis just puts locally allocated objects on the stack.
That works for the non-leaky function itself, but it doesn't help for
the functions it
For what it's worth, the examples from Mark's book still compile with
Python 2.7 and the latest PyQt bindings. And PyQt itself comes with
examples that are stored in Python\lib\site-packages\pyqt4\examples\ .
I don't think a lot has changed that breaks backward-compatibility
since the book was
Gour-Gadadhara Dasa Wrote:
Well, http://d-programming-language.org/ page says: D is a multi-
paradigm programming language that combines a principled approach
with a focus on *practicality*. and in my case I've *practical* need to
write GUI app.
That's certainly true, if you think of the
KennyTM~ wrote:
There are some minor styling bugs. I've only tested it on Chrome 10.
Oh, I see it too. Fixed.
Caligo:
Besides, how long are they going to continue to add crap to
C++, or improve it, while retaining backward compatibility?
From the things they are adding and changing in Fortran today, I think at
least some more decades :-)
Bye,
bearophile
Andrei Alexandrescu wrote:
Oh, and I think learning git/github is a huge net gain outside of
any particular project. I warmly recommend it.
Yeah, I've used git before on the command line, but never the
website.
I'll admit though that for my typical project, my idea of source
control is
jasonw wrote:
If you want to build some fortune 500 website from scratch, D
doesn't deliver the functionality you need right now.
My clients and I would disagree :-)
I've been using D, almost exclusively, to write business websites
for quite a while now. There's a lot of big advantages there
On 4/17/2011 11:22 AM, Adam D. Ruppe wrote:
new version of javascript up:
http://arsdnet.net/d-web-site/std_algorithm2.html
Adam, this is really awesome work!
Some trivial nits:
1. The output window is offset 3 or 4 pixels to the left of the source window.
2. The source window has a 1 pixel
On Sun, 17 Apr 2011 21:45:59 +0200
Andrej Mitrovic andrej.mitrov...@gmail.com wrote:
For what it's worth, the examples from Mark's book still compile with
Python 2.7 and the latest PyQt bindings. And PyQt itself comes with
examples that are stored in Python\lib\site-packages\pyqt4\examples\ .
On 4/17/2011 12:36 PM, Andrei Alexandrescu wrote:
I think adding the text to the Running...\n as soon as you get the request
should help.
Or:
Please wait while the D-9000 computer boots...
On Sun, Apr 17, 2011 at 2:52 PM, jasonw u...@webmails.org wrote:
Gour-Gadadhara Dasa Wrote:
Well, http://d-programming-language.org/ page says: D is a multi-
paradigm programming language that combines a principled approach
with a focus on *practicality*. and in my case I've *practical* need
Hello everyone, this is my second post in the digitalmars.d newsgroup and I
hope it gets as good support and suggestions as my first post :)
I'm playing around with the d programming language and am trying out some
exotic things you normally would write in c++.
Right now I'm trying to 'intercept'
On Sun, Apr 17, 2011 at 4:37 AM, Gour-Gadadhara Dasa g...@atmarama.net wrote:
Hello!
My first post to this newsgroup was a little bit more than 6 months ago
and today I've decided to leave D and use C(P)ython + Qt for our
open-source project of writing multi-platform desktop application.
On Sun, 17 Apr 2011 15:52:36 -0400
jasonw u...@webmails.org wrote:
If you build a desktop application, D isn't the best choice, but you
can still argue to your boss to use it instead because of your
personal productivity issues. There's no other logical reason to
use D instead of C++/Qt or
On Sun, Apr 17, 2011 at 3:01 PM, Walter Bright
newshou...@digitalmars.com wrote:
On 4/17/2011 12:36 PM, Andrei Alexandrescu wrote:
I think adding the text to the Running...\n as soon as you get the
request
should help.
Or:
Please wait while the D-9000 computer boots...
Or
Must DESTROY
Am 17.04.2011 21:52, schrieb jasonw:
Gour-Gadadhara Dasa Wrote:
Well, http://d-programming-language.org/ page says: D is a multi-
paradigm programming language that combines a principled approach
with a focus on *practicality*. and in my case I've *practical* need to
write GUI app.
Caligo Wrote:
On Sun, Apr 17, 2011 at 2:52 PM, jasonw u...@webmails.org wrote:
Gour-Gadadhara Dasa Wrote:
Well, http://d-programming-language.org/ page says: D is a multi-
paradigm programming language that combines a principled approach
with a focus on *practicality*. and in my case
On 11.04.2011 23:27, bearophile wrote:
From what I am seeing, in a D2 program if I have many (tens or more) pure functions that
call to each other, and I want to add (or activate) a printf/writeln inside one (or few)
of those functions to debug it, I may need to temporarily comment out the
On 4/17/2011 1:00 PM, Adam D. Ruppe wrote:
I've been using D, almost exclusively, to write business websites
for quite a while now. There's a lot of big advantages there over
more traditional web languages. I'm hoping to write up an article
detailing some of it in the near future.
Hopefully in
On Sun, 17 Apr 2011 15:11:43 -0500
Andrew Wiley debio...@gmail.com wrote:
Frankly, if your definition of not ready is that the compiler isn't
packaged for you, D isn't the right community to begin with.
First of all, there is no 64bit compiler for FreeBSD. I was
researching about gdc and Iain
On 4/17/2011 1:27 PM, Daniel Gibson wrote:
1. Phobos and druntime is statically compiled in. On a really limited
embedded platform you wouldn't use Phobos anyway, but write your own
standardlib and runtime that suit your needs (it's not like anybody
would use full C++ with STL on such a
On 4/17/11, Gour-Gadadhara Dasa g...@atmarama.net wrote:
Well, I believe that 2.7 is, similar to D1, dead-end, while 3.x is the
future, as D2. ;)
But you've opened this topic because D2 is not ready, and now you want
to switch to Python 3 which might not be ready yet as well? E.g. see:
Walter Bright Wrote:
On 4/17/2011 1:27 PM, Daniel Gibson wrote:
1. Phobos and druntime is statically compiled in. On a really limited
embedded platform you wouldn't use Phobos anyway, but write your own
standardlib and runtime that suit your needs (it's not like anybody
would use full
On 4/17/2011 1:46 PM, jasonw wrote:
I'd like to hear your comments about the 32-bit D2 and minimal executables
issue. If I use dietlibc and gcc, the minimal (static) binary is about 0.2
kilobytes. DMD should have some switch (-embedded) which leaves out all the
cruft I don't need. I'd like to
On Sun, Apr 17, 2011 at 3:30 PM, dennis luehring dl.so...@gmx.net wrote:
On 11.04.2011 23:27, bearophile wrote:
From what I am seeing, in a D2 program if I have many (tens or more) pure
functions that call to each other, and I want to add (or activate) a
printf/writeln inside one (or few) of
On 4/17/2011 2:37 PM, Gary Whatmore wrote:
In every young language community the first users have to make sacrifices and
build the ecosystem. That's how it goes.
While I'm not endorsing the rude tone of the rest of this post, this is
an extremely good point. According to Wikipedia, Python
On 4/17/2011 1:34 PM, Gour-Gadadhara Dasa wrote:
Moreover, QtD requires a patched dmd compiler., so I simply do not
have time to fight such things.
I'd also like to know which bugzilla entry has that patch!
On Sun, 17 Apr 2011 13:45:06 -0700
Walter Bright newshou...@digitalmars.com wrote:
I'd also like to know which bugzilla entry has that patch!
See:
https://bitbucket.org/qtd/repo/wiki/Home and
https://bitbucket.org/qtd/repo/wiki/DmdPatch
Sincerely,
Gour
--
“In the material world,
On 04/17/2011 03:00 PM, Adam D. Ruppe wrote:
jasonw wrote:
If you want to build some fortune 500 website from scratch, D
doesn't deliver the functionality you need right now.
My clients and I would disagree :-)
I've been using D, almost exclusively, to write business websites
for quite a
On Sun, 17 Apr 2011 22:44:20 +0200
Andrej Mitrovic andrej.mitrov...@gmail.com wrote:
But you've opened this topic because D2 is not ready, and now you want
to switch to Python 3 which might not be ready yet as well? E.g. see:
python3wos.appspot.com
Fortunately, Python comes with the big
Adam D. Ruppe destructiona...@gmail.com wrote in message
news:iofgtn$1ifg$1...@digitalmars.com...
jasonw wrote:
If you want to build some fortune 500 website from scratch, D
doesn't deliver the functionality you need right now.
My clients and I would disagree :-)
I've been using D, almost
== Quote from Gour-Gadadhara Dasa (g...@atmarama.net)'s article
--Sig_/Ckct3lX7w5hlz_Hd5UDhpMB
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
On Sun, 17 Apr 2011 15:11:43 -0500
Andrew Wiley debio...@gmail.com wrote:
Frankly, if your definition of not
2011/4/17 Gour-Gadadhara Dasa g...@atmarama.net
On Sun, 17 Apr 2011 15:11:43 -0500
Andrew Wiley debio...@gmail.com wrote:
Frankly, if your definition of not ready is that the compiler isn't
packaged for you, D isn't the right community to begin with.
First of all, there is no 64bit
2011/4/17 Gour-Gadadhara Dasa g...@atmarama.net
On Sun, 17 Apr 2011 15:11:43 -0500
Andrew Wiley debio...@gmail.com wrote:
Frankly, if your definition of not ready is that the compiler isn't
packaged for you, D isn't the right community to begin with.
First of all, there is no
On 4/17/2011 1:54 PM, jasonw wrote:
Walter Bright Wrote:
On 4/17/2011 1:46 PM, jasonw wrote:
I'd like to hear your comments about the 32-bit D2 and minimal
executables issue. If I use dietlibc and gcc, the minimal (static) binary
is about 0.2 kilobytes. DMD should have some switch (-embedded)
On 4/17/2011 1:55 PM, Gour-Gadadhara Dasa wrote:
On Sun, 17 Apr 2011 13:45:06 -0700
Walter Brightnewshou...@digitalmars.com wrote:
I'd also like to know which bugzilla entry has that patch!
See:
https://bitbucket.org/qtd/repo/wiki/Home and
https://bitbucket.org/qtd/repo/wiki/DmdPatch
I
On 4/18/11, Walter Bright newshou...@digitalmars.com wrote:
On 4/17/2011 1:55 PM, Gour-Gadadhara Dasa wrote:
On Sun, 17 Apr 2011 13:45:06 -0700
Walter Brightnewshou...@digitalmars.com wrote:
I'd also like to know which bugzilla entry has that patch!
See:
Am 18.04.2011 00:27, schrieb Andrej Mitrovic:
On 4/18/11, Walter Bright newshou...@digitalmars.com wrote:
On 4/17/2011 1:55 PM, Gour-Gadadhara Dasa wrote:
On Sun, 17 Apr 2011 13:45:06 -0700
Walter Brightnewshou...@digitalmars.com wrote:
I'd also like to know which bugzilla entry has that
On 4/17/2011 3:27 PM, Andrej Mitrovic wrote:
http://www.dsource.org/projects/qtd/attachment/wiki/DmdPatch/dmd.2.046.patch?format=raw
Got it, tanks!
On 4/18/11 12:34 AM, Daniel Gibson wrote:
https://bitbucket.org/qtd/repo/wiki/Home and
https://bitbucket.org/qtd/repo/wiki/DmdPatch
I clicked around that for a while, but can't seem to find the patch file
dmd.dmd-version.patch
On Sun, 17 Apr 2011 16:09:02 -0400, maarten van damme
maartenvd1...@gmail.com wrote:
Hello everyone, this is my second post in the digitalmars.d newsgroup
and I
hope it gets as good support and suggestions as my first post :)
I'm playing around with the d programming language and am trying
I'm not sure if this is the best place to put this question, but since I'm
guessing people here have managed to get GDC to compile D2, I thought I'd ask:
So I just downloaded GDC from
https://bitbucket.org/goshawk/gdc/downloads/gcc-4.5.2-tdm-1-gdc-r546-20110417.zip
and also TDM's GCC from http
On 4/17/2011 11:09 PM, %u wrote:
I'm not sure if this is the best place to put this question, but since I'm
guessing people here have managed to get GDC to compile D2, I thought I'd ask:
D.gnu is the best place for GDC issues and questions.
Does anyone have any ideas how to fix it?
This is an
I'm not sure if this is the best place to put this question, but since I'm
guessing people here have managed to get GDC to compile D2, I thought I'd ask:
D.gnu is the best place for GDC issues and questions.
Ah okay cool. I'll post the code here since you asked but I'll post things there
next
On Sun, 17 Apr 2011 21:49:34 + (UTC)
Iain Buclaw ibuc...@ubuntu.com wrote:
There should be little reason why the compiler won't build/work sweet
as roses - as no one's tested though, there may be some gaps in the C
bindings that trigger static asserts, throw undefined identifier
errors,
On Sun, 17 Apr 2011 23:54:30 +0200
Ulrik Mikaelsson ulrik.mikaels...@gmail.com wrote:
My view, is the D community right now are thinking long and hard about
their own needs, and less of the needs of their users. (For a
language, the application programmer IS the user.) Maybe even rightly
so,
David Nadlinger s...@klickverbot.at wrote in message
news:ioftkj$2811$1...@digitalmars.com...
On 4/18/11 12:34 AM, Daniel Gibson wrote:
https://bitbucket.org/qtd/repo/wiki/Home and
https://bitbucket.org/qtd/repo/wiki/DmdPatch
I clicked around that for a while, but can't seem to find the
On Sat, Apr 16, 2011 at 13:37, simendsjo simen.end...@pandavre.com wrote:
I tried using a template mixin to avoid having to type this all over, but I
cannot get it to work.. I think I have something wrong with my alias usage,
but that's just speculating :)
Try this:
auto arrayOp(string op,
what is the equivalent for this code in D?
#include stdio.h
main()
{
struct S { int i; };
struct S s, *s_ptr;
s_ptr = s;
s_ptr-i = 9;
printf(%d\n, s_ptr-i);
}
On 17/04/2011 18:17, %u wrote:
what is the equivalent for this code in D?
#includestdio.h
main()
{
struct S { int i; };
struct S s, *s_ptr;
s_ptr =s;
s_ptr-i = 9;
printf(%d\n, s_ptr-i);
}
http://d.puremagic.com/issues/show_bug.cgi?id=1389
Walter Bright bugzi...@digitalmars.com changed:
What|Removed |Added
Status|NEW |RESOLVED
http://d.puremagic.com/issues/show_bug.cgi?id=5848
--- Comment #4 from kenn...@gmail.com 2011-04-17 00:50:20 PDT ---
(In reply to comment #3)
(In reply to comment #2)
(In reply to comment #1)
What kind of textual output do you desire in this situation?
What do you mean?
What
http://d.puremagic.com/issues/show_bug.cgi?id=5851
Summary: Ambiguous alias this accepted.
Product: D
Version: D2
Platform: Other
OS/Version: Linux
Status: NEW
Keywords: accepts-invalid
Severity: normal
http://d.puremagic.com/issues/show_bug.cgi?id=5206
--- Comment #8 from Iain Buclaw ibuc...@ubuntu.com 2011-04-17 22:24:37 PDT ---
struct_stat64 in std.file is still present and should be removed. :o)
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are
91 matches
Mail list logo