Re: DLanguage IntelliJ plugin released

2015-12-26 Thread Russel Winder via Digitalmars-d-announce
On Fri, 2015-12-25 at 20:17 +, Kingsley via Digitalmars-d-announce
wrote:
> […]
> 
> Debugging will be in July 2016

Or sooner if others chip in and help out?

-- 
Russel.
=
Dr Russel Winder  t: +44 20 7585 2200   voip: sip:russel.win...@ekiga.net
41 Buckmaster Roadm: +44 7770 465 077   xmpp: rus...@winder.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder



signature.asc
Description: This is a digitally signed message part


Re: Three Cool Things about D

2015-12-26 Thread Rory McGuire via Digitalmars-d-announce
I have a full Jade template parser in Pegged that I just need to finish the
d code gen part, could it be an interesting example?
On 26 Dec 2015 20:10, "Andrei Alexandrescu via Digitalmars-d-announce" <
digitalmars-d-announce@puremagic.com> wrote:

> On 12/26/15 12:29 AM, Joakim wrote:
>
>>
>> 1. Saying "Anywho" to segue to a new topic seems to be a verbal tic of
>> Andrei's now.
>>
>> 2. It's claimed that scoped imports sped up D compilation: has this been
>> measured?  It would help if measurements were cited, as done for
>> compile-time regex performance at the end.
>>
>> 3. It's better that you show usage examples of a PEGGED grammar now, as
>> opposed to a previous talk that ended with the mixin slide, but I think
>> it'd be best if you actually worked a toy example out and showed the
>> generated D code, to really drive the point home.  Even better if it
>> wasn't something you could trivially write in D itself, like the
>> arithmetic example you gave.
>>
>
> Thanks for the feedback! I'll keep it in mind. -- Andrei
>


Re: Three Cool Things about D

2015-12-26 Thread Andrei Alexandrescu via Digitalmars-d-announce

On 12/26/15 12:29 AM, Joakim wrote:


1. Saying "Anywho" to segue to a new topic seems to be a verbal tic of
Andrei's now.

2. It's claimed that scoped imports sped up D compilation: has this been
measured?  It would help if measurements were cited, as done for
compile-time regex performance at the end.

3. It's better that you show usage examples of a PEGGED grammar now, as
opposed to a previous talk that ended with the mixin slide, but I think
it'd be best if you actually worked a toy example out and showed the
generated D code, to really drive the point home.  Even better if it
wasn't something you could trivially write in D itself, like the
arithmetic example you gave.


Thanks for the feedback! I'll keep it in mind. -- Andrei


Re: Official Announcement: 'Learning D' is Released

2015-12-26 Thread Kingsley via Digitalmars-d-announce
On Saturday, 26 December 2015 at 17:58:52 UTC, Guillaume Piolat 
wrote:

On Tuesday, 1 December 2015 at 06:17:17 UTC, Mike Parker wrote:

[...]



Got "Learning D" as a present, still reading.

I must say I didn't expect to learn much after the D Cookbook 
or TDPL.

Wrong!

The content matches perfectly with the stuff I hadn't 
understood well enough.


Just like D it has a lot of value in small details, like "this" 
template parameters, detailing opEquals, details on align, DVM 
introduction...
The chapter on Ranges is extremely helpful and should help 
overcome my "range anxiety". Other chapter are similarly 
thorough on Voldemort types or slices.


Really appreciate the attention to detail that went into it.


This is a fantastic book - thanks very much to Mike for all the 
effort and attention he put into the book :) - I have learned a 
lot from it.


Re: Official Announcement: 'Learning D' is Released

2015-12-26 Thread Guillaume Piolat via Digitalmars-d-announce

On Tuesday, 1 December 2015 at 06:17:17 UTC, Mike Parker wrote:
Due to a minor mix up at the end of an otherwise enjoyable 
process, I wasn't notified that 'Learning D' was released on 
Nov 27. Today, I finally got that notification. Despite there 
already being a thread on the topic here in this forum, please 
forgive me for taking the opportunity to make my "official" 
announcement :)


'Learning D' is available from the publisher's website[1], 
where a sample[2] can also be viewed for those who want to try 
before they buy. It's also available from Amazon[3].



Got "Learning D" as a present, still reading.

I must say I didn't expect to learn much after the D Cookbook or 
TDPL.

Wrong!

The content matches perfectly with the stuff I hadn't understood 
well enough.


Just like D it has a lot of value in small details, like "this" 
template parameters, detailing opEquals, details on align, DVM 
introduction...
The chapter on Ranges is extremely helpful and should help 
overcome my "range anxiety". Other chapter are similarly thorough 
on Voldemort types or slices.


Really appreciate the attention to detail that went into it.


Re: Three Cool Things about D

2015-12-26 Thread Andrei Alexandrescu via Digitalmars-d-announce

On 12/26/15 1:35 PM, Rory McGuire via Digitalmars-d-announce wrote:

I have a full Jade template parser in Pegged that I just need to finish
the d code gen part, could it be an interesting example?


Yes. How well-known is Jade? -- Andrei


2016Q1: std.blas

2015-12-26 Thread Ilya Yaroshenko via Digitalmars-d-announce

Hi,

I will write GEMM and GEMV families of BLAS for Phobos.

Goals:
 - code without assembler
 - code based on SIMD instructions
 - DMD/LDC/GDC support
 - kernel based architecture like OpenBLAS
 - 85-100% FLOPS comparing with OpenBLAS (100%)
 - tiny generic code comparing with OpenBLAS
 - ability to define user kernels
 - allocators support. GEMM requires small internal allocations.
 - @nogc nothrow pure template functions (depends on allocator)
 - optional multithreaded
 - ability to work with `Slice` multidimensional arrays when 
stride between elements in vector is greater than 1. In common 
BLAS matrix strides between rows or columns always equals 1.


Implementation details:
LDC all   : very generic D/LLVM IR kernels. AVX/2/512/neon 
support is out of the box.

DMD/GDC x86   : kernels for  8 XMM registers based on core.simd
DMD/GDC x86_64: kernels for 16 XMM registers based on core.simd
DMD/GDC other : generic kernels without SIMD instructions. 
AVX/2/512 support can be added in the future.


References:
[1] Anatomy of High-Performance Matrix Multiplication: 
http://www.cs.utexas.edu/users/pingali/CS378/2008sp/papers/gotoPaper.pdf

[2] OpenBLAS  https://github.com/xianyi/OpenBLAS

Happy New Year!

Ilya


Re: 2016Q1: std.blas

2015-12-26 Thread Ilya Yaroshenko via Digitalmars-d-announce

Related questions about LDC
http://forum.dlang.org/thread/lcrquwrehuezpxxvq...@forum.dlang.org


Re: So You Want To Write Your Own Language

2015-12-26 Thread Jacob Carlborg via Digitalmars-d-announce

On 25/12/15 04:25, Jakob Jenkov wrote:


I think it depends a lot on your personal preference. For instance, I am
always annoyed about immutable types being forced upon me (okay, they
wouldn't be forced, but I'd have to work to get rid of them). I like
mutable types.


Yeah, we don't need to flip all the defaults, but something like 
safe/system has clearly the wrong default.



Regarding the AST macros - I simply don't know enough about how that
works in practice to have an opinion. Java doesn't have that stuff, so I
don't know what I am missing :-)


There's a lot of stuff that Java doesn't have ;). In theory, all the 
lowerings that the compiler already does could be implemented with AST 
macros. "scope" is lowered to try-catch-finally, "foreach" is lowered to 
a "for" loop and so on.


--
/Jacob Carlborg


Re: DLanguage IntelliJ plugin released

2015-12-26 Thread Kingsley via Digitalmars-d-announce

On Saturday, 26 December 2015 at 07:17:01 UTC, Minas Mina wrote:
Also, it seems that no [project name].sdl file is created for 
dub projects.


I've fixed both of those issues and released


Re: So You Want To Write Your Own Language

2015-12-26 Thread Walter Bright via Digitalmars-d-announce

On 12/26/2015 4:05 AM, Jacob Carlborg wrote:

There's a lot of stuff that Java doesn't have ;). In theory, all the lowerings
that the compiler already does could be implemented with AST macros. "scope" is
lowered to try-catch-finally, "foreach" is lowered to a "for" loop and so on.



Many of the lowerings require semantic information that is not available from 
ASTs.


Re: Three Cool Things about D

2015-12-26 Thread Daniel Kozak via Digitalmars-d-announce

https://strongloop.com/strongblog/compare-javascript-templates-jade-mustache-dust/

Andrei Alexandrescu via Digitalmars-d-announce 
 napsal So, pro 26, 2015 v 8∶58 
:

On 12/26/15 1:35 PM, Rory McGuire via Digitalmars-d-announce wrote:
I have a full Jade template parser in Pegged that I just need to 
finish

the d code gen part, could it be an interesting example?


Yes. How well-known is Jade? -- Andrei


Re: 2016Q1: std.blas

2015-12-26 Thread Charles McAnany via Digitalmars-d-announce
On Saturday, 26 December 2015 at 19:57:19 UTC, Ilya Yaroshenko 
wrote:

Hi,

I will write GEMM and GEMV families of BLAS for Phobos.

Goals:
 - code without assembler
 - code based on SIMD instructions
 - DMD/LDC/GDC support
 - kernel based architecture like OpenBLAS
 - 85-100% FLOPS comparing with OpenBLAS (100%)
 - tiny generic code comparing with OpenBLAS
 - ability to define user kernels
 - allocators support. GEMM requires small internal allocations.
 - @nogc nothrow pure template functions (depends on allocator)
 - optional multithreaded
 - ability to work with `Slice` multidimensional arrays when 
stride between elements in vector is greater than 1. In common 
BLAS matrix strides between rows or columns always equals 1.


Implementation details:
LDC all   : very generic D/LLVM IR kernels. AVX/2/512/neon 
support is out of the box.

DMD/GDC x86   : kernels for  8 XMM registers based on core.simd
DMD/GDC x86_64: kernels for 16 XMM registers based on core.simd
DMD/GDC other : generic kernels without SIMD instructions. 
AVX/2/512 support can be added in the future.


References:
[1] Anatomy of High-Performance Matrix Multiplication: 
http://www.cs.utexas.edu/users/pingali/CS378/2008sp/papers/gotoPaper.pdf

[2] OpenBLAS  https://github.com/xianyi/OpenBLAS

Happy New Year!

Ilya


I am absolutely thrilled! I've been using scid 
(https://github.com/kyllingstad/scid) and cblas 
(https://github.com/DlangScience/cblas) in a project, and I can't 
wait to see a smooth integration in the standard library.


Couple questions:

Why will the functions be nothrow? It seems that if you try to 
take the determinant of a 3x5 matrix, you should get an exception.


By 'tiny generic code', you mean that DGEMM, SSYMM, CTRMM, etc. 
all become one function, basically?


You mention that you'll have GEMM and GEMV in your features, do 
you think we'll get a more complete slice of BLAS/LAPACK in the 
future, like GESVD and GEES?


If it's not in the plan, I'd be happy to work on re-tooling scid 
and cblas to feel like std.blas. (That is, mimic how you choose 
to represent a matrix, throw the same type of exceptions, etc. 
But still use external libraries.)


Thanks again for this!


Re: Three Cool Things about D

2015-12-26 Thread Rory McGuire via Digitalmars-d-announce
On 26 Dec 2015 22:00, "Andrei Alexandrescu via Digitalmars-d-announce" <
digitalmars-d-announce@puremagic.com> wrote:
>
> On 12/26/15 1:35 PM, Rory McGuire via Digitalmars-d-announce wrote:
>>
>> I have a full Jade template parser in Pegged that I just need to finish
>> the d code gen part, could it be an interesting example?
>
>
> Yes. How well-known is Jade? -- Andrei

It is well known. I thought handlebars was used more but those github
numbers say different.

Vibe.d had a template engine called diet which is almost like Jade. It is
also completed so you might prefer that as an example.


Re: 2016Q1: std.blas

2015-12-26 Thread Ilya Yaroshenko via Digitalmars-d-announce

On Sunday, 27 December 2015 at 05:23:27 UTC, Basile B. wrote:
On Saturday, 26 December 2015 at 19:57:19 UTC, Ilya Yaroshenko 
wrote:
 - allocators support. GEMM requires small internal 
allocations.

 - @nogc nothrow pure template functions (depends on allocator)


Do you mean using std.experimental.allocators and something 
like (IAllocator alloc) as template parameter ?


If so this will mostly not work. Only Mallocator is really 
@nogc (on phobos master), and maybe only from the next DMD 
release point, so GDC and LDC not before monthes.


Mallocator is only base to build various user defined allocators 
with building blocks like freelist. I hope to create std.blas 
module without Phobos and core.memory dependencies, 
so it can be used like C library. std.allocator usage is 
optionally.


Ilya


Re: 2016Q1: std.blas

2015-12-26 Thread Andrei Amatuni via Digitalmars-d-announce
On Saturday, 26 December 2015 at 19:57:19 UTC, Ilya Yaroshenko 
wrote:

Hi,

I will write GEMM and GEMV families of BLAS for Phobos.

[...]


Just want to thank you in advance. Can't wait!


Re: 2016Q1: std.blas

2015-12-26 Thread Basile B. via Digitalmars-d-announce
On Saturday, 26 December 2015 at 19:57:19 UTC, Ilya Yaroshenko 
wrote:

 - allocators support. GEMM requires small internal allocations.
 - @nogc nothrow pure template functions (depends on allocator)


Do you mean using std.experimental.allocators and something like 
(IAllocator alloc) as template parameter ?


If so this will mostly not work. Only Mallocator is really @nogc 
(on phobos master), and maybe only from the next DMD release 
point, so GDC and LDC not before monthes.


Re: 2016Q1: std.blas

2015-12-26 Thread Ilya Yaroshenko via Digitalmars-d-announce
On Sunday, 27 December 2015 at 05:43:47 UTC, Charles McAnany 
wrote:
On Saturday, 26 December 2015 at 19:57:19 UTC, Ilya Yaroshenko 
wrote:

Hi,

I will write GEMM and GEMV families of BLAS for Phobos.


[...]


References:
[1] Anatomy of High-Performance Matrix Multiplication: 
http://www.cs.utexas.edu/users/pingali/CS378/2008sp/papers/gotoPaper.pdf

[2] OpenBLAS  https://github.com/xianyi/OpenBLAS

Happy New Year!

Ilya


I am absolutely thrilled! I've been using scid 
(https://github.com/kyllingstad/scid) and cblas 
(https://github.com/DlangScience/cblas) in a project, and I 
can't wait to see a smooth integration in the standard library.


Couple questions:

Why will the functions be nothrow? It seems that if you try to 
take the determinant of a 3x5 matrix, you should get an 
exception.


Determinant is a part of LAPACK API, but not BLAS API. BTW, D 
scientific code should not throw exceptions if it is possible, 
because it can be integrated with C projects.


By 'tiny generic code', you mean that DGEMM, SSYMM, CTRMM, etc. 
all become one function, basically?


No, it is about portability and optimisation. OpenBLAS has huge 
code base it is written in assembler for various platforms. I 
want to make generalise optimisation logic.


You mention that you'll have GEMM and GEMV in your features, do 
you think we'll get a more complete slice of BLAS/LAPACK in the 
future, like GESVD and GEES?


LAPACK can be implemented as standalone package. I hope that I 
will have a time to work on it. Another way is to define new part 
of Phobos with sci.* suffix.


If it's not in the plan, I'd be happy to work on re-tooling 
scid and cblas to feel like std.blas. (That is, mimic how you 
choose to represent a matrix, throw the same type of 
exceptions, etc. But still use external libraries.)


It will be cool to see scid with Matrix type replaced by 
Slice!(2, double*) / Slice!(2, float*). I will argue to do not 
use any kind of Matrix type, but upcoming Slice 
https://github.com/D-Programming-Language/phobos/pull/3397. 
Slice!(2, double*) is generalisation of matrix type with two 
strides, one for rows and one for columns. std.blas can be 
implemented to support this feature out of the box. Slice!(2, 
double*) do not need to have transposed flag (transpose operator 
only swaps strides and lengths) and fortran_vs_C flag (column 
based vs row based) is deprecated rudiment.


Ilya