On 01/27/2016 08:59 PM, Luís Marques wrote:
This works:
int[][] a;
RandomAccessFinite!(int[]) r = inputRangeObject(a);
What would be a good way to achieve something equivalent to this?:
int[][] a;
RandomAccessFinite!(RandomAccessFinite!int) r = inputRangeObject(a);
All I
On Thursday, 28 January 2016 at 02:46:05 UTC, Mike Parker wrote:
Phobos/Tango divide and the transition to D2. I can tell you
anecdotally that things are running on quite a larger scale now
than at any other point during that time. More libraries to
choose from, more newsgroup traffic, more new
On Thursday, 28 January 2016 at 05:39:55 UTC, Era Scarecrow wrote:
It really comes down to that an array qualifies as an Lvalue
operator; But I _think_ this is a bug in the language since you
should be able to assign a new Rvalue to a new array element
just being created/added. We'll have to g
On Thursday, 28 January 2016 at 05:27:16 UTC, Era Scarecrow wrote:
On Thursday, 28 January 2016 at 03:55:22 UTC, Matt Elkins wrote:
//handles ~= RH(3); // Fails because post-blit constructor
is @disabled
It really comes down to that an array qualifies as an Lvalue
operator; But I _think_
On Thursday, 28 January 2016 at 02:59:38 UTC, Mike Parker wrote:
On Thursday, 28 January 2016 at 00:46:00 UTC, rsw0x wrote:
Yes, how dare people see D marketed as a non-alpha language
then realize the language is actually still in an alpha-state.
It's not in an alpha state. It's a grassroots
On Thursday, 28 January 2016 at 03:55:22 UTC, Matt Elkins wrote:
//handles ~= RH(3); // Fails because post-blit constructor
is @disabled
It really comes down to that an array qualifies as as an Lvalue
operator; But I _think_ this is a bug in the language since you
should be able to assig
This works:
int[][] a;
RandomAccessFinite!(int[]) r = inputRangeObject(a);
What would be a good way to achieve something equivalent to this?:
int[][] a;
RandomAccessFinite!(RandomAccessFinite!int) r =
inputRangeObject(a);
On Thursday, 28 January 2016 at 03:38:32 UTC, Era Scarecrow wrote:
On Thursday, 28 January 2016 at 03:02:34 UTC, Matt Elkins wrote:
Thanks for the response! I learned more about D just from
studying this example.
Hmmm you might read the free online book, i'm going through it
and finding it u
On Thursday, 28 January 2016 at 02:59:38 UTC, Mike Parker wrote:
There's no large team, no governing body, no committee to drive
development. Everyone using it needs to accept that any
particular personal peeve they have with the language are only
going to get changed in one of two ways: there'
On Thu, Jan 28, 2016 at 02:59:38AM +, Mike Parker via Digitalmars-d wrote:
> On Thursday, 28 January 2016 at 00:46:00 UTC, rsw0x wrote:
>
> >Yes, how dare people see D marketed as a non-alpha language then
> >realize the language is actually still in an alpha-state.
>
> It's not in an alpha s
On Thursday, 28 January 2016 at 03:38:32 UTC, Era Scarecrow wrote:
hmmm... You'd best be allocating the reference directly on the
array, you should be able to add to it.
Forgot to mention. Since UniqueRef is likely just to ensure
nothing else can copy away with the data, you don't HAVE to ma
On Thursday, 28 January 2016 at 03:02:34 UTC, Matt Elkins wrote:
Thanks for the response! I learned more about D just from
studying this example.
Hmmm you might read the free online book, i'm going through it
and finding it useful so far as a refresher.
http://ddili.org/ders/d.en/index.html
On 01/26/2016 08:05 AM, xenon325 wrote:
Yes. Rule 7 covers that. There's also an example showing the syntax,
search for "Template specialization with named parameter". Yes, it
does look a bit strange.
Just like C++98 used to require space
:: is not a token, so no space is required.
between
On Thursday, 28 January 2016 at 00:14:18 UTC, ZombineDev wrote:
On Wednesday, 27 January 2016 at 23:20:27 UTC, Matt Elkins
wrote:
[...]
In my project I have something like this:
```
import std.experimental.allocator :
make, dispose;
import std.algorithm.mutation :
move, moveEmplace;
stru
On Thursday, 28 January 2016 at 00:46:00 UTC, rsw0x wrote:
Yes, how dare people see D marketed as a non-alpha language
then realize the language is actually still in an alpha-state.
It's not in an alpha state. It's a grassroots language. There's
no other way to describe it. Being community dr
On Wednesday, 27 January 2016 at 22:32:33 UTC, Igor wrote:
2. Compared to the explosion that D1 had several years ago and
all the libraries that were create and all the work, D is
relatively stagnate. Just because stuff is still happening
doesn't mean anything.
D has lost a lot of momentum i
On 1/27/2016 4:43 PM, Manu via Digitalmars-d wrote:
I hoped the winkey face would imply that this was a joke...
Although the joke's on me; the point is, it takes me a really long
time to trace through and try and understand what's going on. Finding
my way to this image is not a short process. It
On 1/27/2016 4:45 PM, Manu via Digitalmars-d wrote:
I think the problem is the 'final'. Try removing it as a workaround.
Okay, I can try that quickly tonight.
99% of functions are final, and about 80% of virtual functions are final too.
I understand, and I'll see if I can figure out a proper f
On Wednesday, 27 January 2016 at 22:18:49 UTC, deadalnix wrote:
On Wednesday, 27 January 2016 at 20:51:43 UTC, rsw0x wrote:
On Wednesday, 27 January 2016 at 20:31:33 UTC, deadalnix wrote:
On Wednesday, 27 January 2016 at 09:00:17 UTC, rsw0x wrote:
The response from the D community seems to be a
On 28 January 2016 at 10:27, Walter Bright via Digitalmars-d
wrote:
> On 1/27/2016 3:56 PM, Walter Bright wrote:
>>
>> I can't do anything with this, as the code submitted in the bug report is
>> incomplete.
>
>
> I think the problem is the 'final'. Try removing it as a workaround.
Okay, I can tr
On 28 January 2016 at 09:56, Walter Bright via Digitalmars-d
wrote:
> On 1/27/2016 2:50 AM, Manu via Digitalmars-d wrote:
>>
>> On 26 January 2016 at 15:20, Manu wrote:
>>>
>>> On 26 January 2016 at 15:11, Walter Bright via Digitalmars-d
>>> wrote:
On 1/25/2016 9:02 PM, Manu via Digita
On 1/27/2016 3:56 PM, Walter Bright wrote:
I can't do anything with this, as the code submitted in the bug report is
incomplete.
I think the problem is the 'final'. Try removing it as a workaround.
On Wednesday, 27 January 2016 at 23:20:27 UTC, Matt Elkins wrote:
Hi all -- I am very new to D, coming from a background heavy on
C++ as well as some other languages. Consequently, I am trying
to get my head around D idioms and could use some help.
In a pet project of mine I have to deal with
On 1/27/2016 2:50 AM, Manu via Digitalmars-d wrote:
On 26 January 2016 at 15:20, Manu wrote:
On 26 January 2016 at 15:11, Walter Bright via Digitalmars-d
wrote:
On 1/25/2016 9:02 PM, Manu via Digitalmars-d wrote:
Next blocker: https://issues.dlang.org/show_bug.cgi?id=15610
Tried today's nig
On Wed, 27 Jan 2016 22:18:49 +, deadalnix wrote:
> On Wednesday, 27 January 2016 at 20:51:43 UTC, rsw0x wrote:
>> On Wednesday, 27 January 2016 at 20:31:33 UTC, deadalnix wrote:
>>> On Wednesday, 27 January 2016 at 09:00:17 UTC, rsw0x wrote:
The response from the D community seems to be a
On Wednesday, 27 January 2016 at 22:32:33 UTC, Igor wrote:
Um,
1. I'm not comparing it to C++.
2. Compared to the explosion that D1 had several years ago and
all the libraries that were create and all the work, D is
relatively stagnate. Just because stuff is still happening
doesn't mean anyt
Hi all -- I am very new to D, coming from a background heavy on
C++ as well as some other languages. Consequently, I am trying to
get my head around D idioms and could use some help.
In a pet project of mine I have to deal with a lot (both many
kinds and many instances) of handles to non-memor
On Wednesday, 27 January 2016 at 22:32:33 UTC, Igor wrote:
Maybe D needs to create it's own OS built on an OOP foundation
without all the pitfalls of modern windows, OSX and Linux?
Maybe that will put it on the map.
...I can't tell if you're being sarcastic or not...
On Wednesday, 27 January 2016 at 21:58:06 UTC, Laeeth Isharc
wrote:
One and the same.
[snip]
I disagree. Your point was that open source is bottom-up and not
top-down. That's more like spontaneous order
https://en.wikipedia.org/wiki/Spontaneous_order
It's a specific idea within the broader
On Wednesday, 27 January 2016 at 05:28:56 UTC, Jack Stouffer
wrote:
On Tuesday, 26 January 2016 at 21:50:58 UTC, Igor wrote:
What D lacks is organizational structure! It's akin to a bunch
of kids programming in their bedrooms cobbling together stuff
and being ecstatic that it works(for them at
On Wednesday, 27 January 2016 at 20:51:43 UTC, rsw0x wrote:
On Wednesday, 27 January 2016 at 20:31:33 UTC, deadalnix wrote:
On Wednesday, 27 January 2016 at 09:00:17 UTC, rsw0x wrote:
The response from the D community seems to be an overwhelming
"It's fine as is" when it's obviously not. Which
On Wednesday, 27 January 2016 at 17:11:18 UTC, jmh530 wrote:
On Wednesday, 27 January 2016 at 16:40:11 UTC, Laeeth Isharc
wrote:
and it's more governed by the principle of catallaxy discussed
by Hayek
Principle of spontaneous order might be appropriate.
One and the same.
https://en.wikipedia
On 01/27/2016 03:09 PM, ZombineDev wrote:
https://github.com/D-Programming-Language/dmd/pull/5151 has been on the
table since Aug 14, 2015.
Thanks! I've initiated a follow up with Walter and Martin. -- Andrei
I wouldn't be using D if there wasn't a way around the GC. I
don't have a grudge against Garbage Collection, I just can't have
all my threads paused in a real-time application for practical
reasons. If a user is running my program on a slow machine and I
need to run a lot of code per frame then
On Wednesday, 27 January 2016 at 20:25:33 UTC, H. S. Teoh wrote:
On Wed, Jan 27, 2016 at 07:54:21PM +, Era Scarecrow via
Digitalmars-d wrote:
But it would seem easier/simpler if the compiler just hooks
in the Regex that's compiled into it instead and passes the
data back and forth. It d
On Wed, 27 Jan 2016 20:28:42 +, deadalnix wrote:
> On Wednesday, 27 January 2016 at 14:22:18 UTC, Shachar Shemesh wrote:
>> I bring it up every time the subject comes up, in the hopes that at
>> some point it will sink in.
>>
>> No, D is not capable of doing it already. Without 100% reliable
>
On Wednesday, 27 January 2016 at 20:31:33 UTC, deadalnix wrote:
On Wednesday, 27 January 2016 at 09:00:17 UTC, rsw0x wrote:
The response from the D community seems to be an overwhelming
"It's fine as is" when it's obviously not. Which is making me
question sinking more time into D if there actu
On Wednesday, 27 January 2016 at 09:00:17 UTC, rsw0x wrote:
The response from the D community seems to be an overwhelming
"It's fine as is" when it's obviously not. Which is making me
question sinking more time into D if there actually is no
cohesive plan to make D an actual C++ competitor rath
On Wednesday, 27 January 2016 at 14:22:18 UTC, Shachar Shemesh
wrote:
I bring it up every time the subject comes up, in the hopes
that at some point it will sink in.
No, D is not capable of doing it already. Without 100% reliable
destructors, RAII is simply not implementable.
D's destructors
On Wed, Jan 27, 2016 at 07:54:21PM +, Era Scarecrow via Digitalmars-d wrote:
> On Wednesday, 27 January 2016 at 19:05:01 UTC, H. S. Teoh wrote:
> >An alternative would be to use `if (_ctfe)` branches in the code to
> >switch to a different matching engine when in CTFE, and leaving the
> >runtim
On Wed, 27 Jan 2016 19:25:49 +, rsw0x wrote:
> On Wednesday, 27 January 2016 at 19:21:11 UTC, Abdulhaq wrote:
>> On Wednesday, 27 January 2016 at 18:09:50 UTC, Ola Fosheim Grøstad
>> wrote:
>>> On Wednesday, 27 January 2016 at 15:14:07 UTC, bachmeier wrote:
And ironically, in this very th
On Wednesday, 27 January 2016 at 17:08:09 UTC, Andrei
Alexandrescu wrote:
On 01/27/2016 09:51 AM, Shachar Shemesh wrote:
import std.stdio;
struct RAII {
int num;
~this() {
writefln("Destructed %s", num);
}
}
struct Container {
int num;
RAII raii;
this(
On Wednesday, 27 January 2016 at 19:05:01 UTC, H. S. Teoh wrote:
An alternative would be to use `if (_ctfe)` branches in the
code to switch to a different matching engine when in CTFE, and
leaving the runtime code untouched.
Hmmm... As I recall there's 2 major engines that run Regex (DFA
& N
On Wednesday, 27 January 2016 at 18:27:31 UTC, H. S. Teoh wrote:
2. Peer review
I can help test it, since I'm using Debian.
3. Submit to Debian/Ubuntu.
I can also help with uploading, if necessary. But probably
that's the least of your worries right now. :-P
T
If a kUbuntu user ca
On Wednesday, 27 January 2016 at 17:50:09 UTC, Ola Fosheim
Grøstad wrote:
BASIC was polished and shipped with literally every single home
computer in the 80s. Primitive yes, but widely used. Much more
so than D. It did exactly what it was supposed to do and didn't
have any incomplete features.
On Wednesday, 27 January 2016 at 18:09:50 UTC, Ola Fosheim
Grøstad wrote:
That makes D a toy language and C++ an industry standard.
Not very difficult to grok, I would think.
Sure, but...
https://www.youtube.com/watch?v=7FYTc55nGEI
On Wednesday, 27 January 2016 at 19:21:11 UTC, Abdulhaq wrote:
On Wednesday, 27 January 2016 at 18:09:50 UTC, Ola Fosheim
Grøstad wrote:
On Wednesday, 27 January 2016 at 15:14:07 UTC, bachmeier wrote:
And ironically, in this very thread, a C++ programmer has
called D a toy language.
D is inco
On Wednesday, 27 January 2016 at 18:09:50 UTC, Ola Fosheim
Grøstad wrote:
On Wednesday, 27 January 2016 at 15:14:07 UTC, bachmeier wrote:
And ironically, in this very thread, a C++ programmer has
called D a toy language.
D is incomplete, unfinished, unspecified and unstable. C++14 is
an ISO s
On Wed, Jan 27, 2016 at 06:47:59PM +, Pierre Krafft via Digitalmars-d wrote:
> On Tuesday, 26 January 2016 at 12:47:26 UTC, w0rp wrote:
> >Unless I'm mistaken, I think the compiler for regex currently works
> >at compile time, but not the matcher. Maybe someone who knows the
> >module could add
On Tuesday, 26 January 2016 at 12:47:26 UTC, w0rp wrote:
Unless I'm mistaken, I think the compiler for regex currently
works at compile time, but not the matcher. Maybe someone who
knows the module could add support for that.
That's correct. I looked in to this a while ago and found out
that
On Tue, Jan 26, 2016 at 08:23:13PM +0100, Iain Buclaw via Digitalmars-d wrote:
[...]
> Both myself and the GCC maintainers are keen on this. We have a D
> compiler, but only a handful of (obsolete) software that uses it.
>
> I have source packages for dub, dustmite, digger and dscanner. I
> prob
On Wednesday, 27 January 2016 at 15:14:07 UTC, bachmeier wrote:
And ironically, in this very thread, a C++ programmer has
called D a toy language.
D is incomplete, unfinished, unspecified and unstable. C++14 is
an ISO standard and has several independent implementations that
are polished and
On Wednesday, 27 January 2016 at 16:48:24 UTC, Era Scarecrow
wrote:
Toy language? I recall BASIC was considered a beginners
language back in the day, and yet so much code is written with
it. True since the language was more fully implemented on DOS
with Qbasic and later Visual Basic; But as lo
On Wednesday, 27 January 2016 at 17:20:37 UTC, rsw0x wrote:
Rust had explosive adoption despite targeting the same exact
niche as D, there is **not** a lack of developers that want an
alternative to C++.
Indeed, and why do Rust have so many contributors to the
essential infrastructure? Becaus
On Tuesday, 26 January 2016 at 20:33:34 UTC, Chris Wright wrote:
On Tue, 26 Jan 2016 11:41:49 +, nbro wrote:
Does D
offer something that other known programming languages, such
as C++,
Java and Python, do not offer?
D has in the standard runtime Fibers (aka coroutines).
You can use fibe
On Wednesday, 27 January 2016 at 15:14:07 UTC, bachmeier wrote:
And ironically, in this very thread, a C++ programmer has
called D a toy language.
C++ programmer
No.
I've been using D since 2012 and have ported two large personal
academic codebases to it.
Ignoring the issues D has or pretend
On Wednesday, 27 January 2016 at 16:40:11 UTC, Laeeth Isharc
wrote:
and it's more governed by the principle of catallaxy discussed
by Hayek
Principle of spontaneous order might be appropriate.
On 01/27/2016 09:51 AM, Shachar Shemesh wrote:
import std.stdio;
struct RAII {
int num;
~this() {
writefln("Destructed %s", num);
}
}
struct Container {
int num;
RAII raii;
this(int num) {
writefln("Constructing %s", num);
this.num = n
On Wednesday, 27 January 2016 at 15:14:07 UTC, bachmeier wrote:
All language comparisons involve "bashing" other languages.
Otherwise there is no answer when someone asks "Why language X
rather than language Y?"
Sometimes it's just one language feature (or lack of it) that
makes (or breaks)
On Wednesday, 27 January 2016 at 16:12:49 UTC, rsw0x wrote:
On Wednesday, 27 January 2016 at 15:37:39 UTC, Jack Stouffer
wrote:
On Wednesday, 27 January 2016 at 09:00:17 UTC, rsw0x wrote:
toy language
What is with everyone using inane hyperbole in this thread? Is
everyone trying to one up ea
On Wednesday, 27 January 2016 at 15:37:39 UTC, Jack Stouffer
wrote:
D is a toy language? Really? Tell that to Sociomantic and
AdRoll, I'm sure they use D right next to brainfuck, right?
brainfuck...
Recently as an experiment I was going through to decide on the
minimum instructions needed f
On Wednesday, 27 January 2016 at 09:00:17 UTC, rsw0x wrote:
On Wednesday, 27 January 2016 at 08:56:09 UTC, Ola Fosheim
Grøstad wrote:
On Wednesday, 27 January 2016 at 08:08:30 UTC, Tobias Müller
wrote:
H. S. Teoh via Digitalmars-d
wrote:
[long rant]
If you want to attract new programmers yo
On Wednesday, 27 January 2016 at 16:12:49 UTC, rsw0x wrote:
PureScript is used by SlamData, a multi-million dollar company.
I still consider PureScript a toy language.
Purescript, Typescript, etc. are not languages, they're glorified
preprocessors.
On Wednesday, 27 January 2016 at 15:37:39 UTC, Jack Stouffer
wrote:
On Wednesday, 27 January 2016 at 09:00:17 UTC, rsw0x wrote:
toy language
What is with everyone using inane hyperbole in this thread? Is
everyone trying to one up each other?
D is a toy language? Really? Tell that to Socioma
On Wednesday, 27 January 2016 at 06:16:47 UTC, Bubbasaur wrote:
Really I don't get this talk about convert someone from a
language x to y. It will be very hard, some are programming
since a long time and many don't want to change no matter what,
and there are other issues like jobs and so on.
On Wednesday, 27 January 2016 at 09:00:17 UTC, rsw0x wrote:
toy language
What is with everyone using inane hyperbole in this thread? Is
everyone trying to one up each other?
D is a toy language? Really? Tell that to Sociomantic and AdRoll,
I'm sure they use D right next to brainfuck, right?
On Wednesday, 27 January 2016 at 08:08:30 UTC, Tobias Müller
wrote:
If you want to attract new programmers you should stop
constantly bashing other programming languages on the public
forums.
This is one thing that Rust got right.
Tobi
I know I should just let this go, because time is val
On 27/01/16 16:24, Minas Mina wrote:
On Wednesday, 27 January 2016 at 14:22:18 UTC, Shachar Shemesh wrote:
On 26/01/16 11:33, deadalnix wrote:
On Tuesday, 26 January 2016 at 09:16:47 UTC, Ola Fosheim Grøstad wrote:
[...]
Now if one want to use that, D is very capable of doing it already. Just
On Wednesday, 27 January 2016 at 14:22:18 UTC, Shachar Shemesh
wrote:
On 26/01/16 11:33, deadalnix wrote:
On Tuesday, 26 January 2016 at 09:16:47 UTC, Ola Fosheim
Grøstad wrote:
[...]
Now if one want to use that, D is very capable of doing it
already. Just
won't make it the default (like it is
On 26/01/16 11:33, deadalnix wrote:
On Tuesday, 26 January 2016 at 09:16:47 UTC, Ola Fosheim Grøstad wrote:
Would it be possible to make a fully compatible unique_ptr/shared_ptr
solution that acts as the default memory management scheme in D within
6 months?
Now if one want to use that, D is v
On 26 January 2016 at 15:20, Manu wrote:
> On 26 January 2016 at 15:11, Walter Bright via Digitalmars-d
> wrote:
>> On 1/25/2016 9:02 PM, Manu via Digitalmars-d wrote:
>>>
>>> On 24 January 2016 at 20:40, Walter Bright via Digitalmars-d
>>> wrote:
On 1/22/2016 5:46 PM, Manu via Digital
On 26 January 2016 at 15:20, Manu wrote:
> On 26 January 2016 at 15:11, Walter Bright via Digitalmars-d
> wrote:
>> On 1/25/2016 9:02 PM, Manu via Digitalmars-d wrote:
>>>
>>> On 24 January 2016 at 20:40, Walter Bright via Digitalmars-d
>>> wrote:
On 1/22/2016 5:46 PM, Manu via Digital
2016-01-27 9:56 GMT+01:00 rsw0x via Digitalmars-d <
digitalmars-d@puremagic.com>:
> This is not applicable in a scenario where I want to actually copy the
> parameters by value.
> It still captures the context, it just allows it to move down the stack.
>
Then a library solution to do so is trivia
On Wednesday, 27 January 2016 at 09:00:17 UTC, rsw0x wrote:
The response from the D community seems to be an overwhelming
"It's fine as is" when it's obviously not. Which is making me
question sinking more time into D if there actually is no
cohesive plan to make D an actual C++ competitor rath
On Tuesday, 26 January 2016 at 20:33:34 UTC, Chris Wright wrote:
You can use fibers in C++ if you find a library to do it (boost
might?). You might be able to find a Java library for it, but
it's difficult and might require bytecode rewriting.
The java approach is Netty and NIO.
On Wednesday, 27 January 2016 at 08:56:09 UTC, Ola Fosheim
Grøstad wrote:
On Wednesday, 27 January 2016 at 08:08:30 UTC, Tobias Müller
wrote:
H. S. Teoh via Digitalmars-d
wrote:
[long rant]
If you want to attract new programmers you should stop
constantly bashing other programming languages
On Wednesday, 27 January 2016 at 08:48:20 UTC, Mathias Lang wrote:
2016-01-27 8:10 GMT+01:00 rsw0x via Digitalmars-d <
digitalmars-d@puremagic.com>:
[...]
For delegate you can use `scope delegate`, which is
stack-allocated.
Using a sink-based approach like `toString` that specific point
i
On Wednesday, 27 January 2016 at 08:08:30 UTC, Tobias Müller
wrote:
H. S. Teoh via Digitalmars-d
wrote:
[long rant]
If you want to attract new programmers you should stop
constantly bashing other programming languages on the public
forums.
This is one thing that Rust got right.
Well, C+
2016-01-27 8:10 GMT+01:00 rsw0x via Digitalmars-d <
digitalmars-d@puremagic.com>:
> I have to manually create my own functors to be able to capture variables
> by value in lambdas so that they're usable in @nogc. How C++98.
> Alias template parameters are again massive hidden abusers of the GC.
H. S. Teoh via Digitalmars-d wrote:
> [long rant]
If you want to attract new programmers you should stop constantly bashing
other programming languages on the public forums.
This is one thing that Rust got right.
Tobi
On Wednesday, 27 January 2016 at 03:06:35 UTC, Sergei Degtiarev
wrote:
I think, you see it at wrong angle. Yes, I am C++ programmer,
and I love it, and I anticipate C++17 coming. And I also like
D, and hope it eventually be another language I will be as
fluent as I'm in C++ now, but I'm no way
81 matches
Mail list logo