Had another 48hr game jam this weekend...

Jakob Ovrum jakobovrum at gmail.com
Sat Aug 31 20:53:29 PDT 2013


Sorry about the nonsensical reply, the web interface was acting 
up... this is the intended reply.

On Sunday, 1 September 2013 at 02:05:51 UTC, Manu wrote:
> The only compiler you can realistically use productively in 
> windows is
> DMD-Win64, and that doesn't work out of the box.

Why didn't you go with DMD-Win32? Because of OMF? implib and/or 
objconv is a hassle but probably less of a hassle than using the 
nascent DMD-Win64.

> Overwhelmingly, the biggest complaint was a lack of symbolic 
> information to
> assist with auto-completion. Visual-D tries valiantly, but it 
> falls quite
> short of the mark.
> This goes back to the threads where the IDE guys are writing 
> their own
> parsers, when really, DMD should be able to be built as a lib, 
> with an API
> designed for using DMD as a lib/plugin.

Although I'm not convinced auto-completion is a vital feature 
(Microsoft's C++ IntelliSense is shit too), I agree that any time 
spent on custom parsers and best-effort semantic analysis is a 
complete waste of time. The only semantic analysis engine that is 
going to be sufficiently good for D is one from a compiler 
front-end. Apart from DMD, it's worth taking a look at SDC for 
this.

> some windows dev's want a CHM that looks like
> the typical Microsoft doc's people are used to. Those that 
> aren't familiar
> with the CHM viewer; it's just HTML but with a nice index + 
> layout tree.

dmd2\windows\bin\d.chm

> The question came up multiple times; "I don't think this should 
> be an
> array... what containers can I use, and where are they?"...
> Also, nobody could work out how to remove an arbitrary item 
> from an array,
> or an item from an AA by reference/value (only by key).
>
> This code:
>   foreach(i, item; array)
>     if(item == itemToRemove)
>       array = array[0..i] ~ array[i+1..$];
> Got a rather 'negative' reaction from the audience to put it 
> lightly...

`std.algorithm.remove` provides both stable (preserves order, 
shuffles entire array down) and unstable (swaps with last element 
and shrinks by one) removal. However, Phobos does not make a 
habit of providing helpers for strictly O(n) algorithms, so the 
O(n) nature has to be made explicit by first getting the index 
with `std.algorithm.countUntil`.

Removing a pair from an AA by value is also an exercise in linear 
search, and as such will not get a deceptive helper function. 
However, once range interfaces for AAs mature, such an algorithm 
can be composed trivially.

> Yes, we hit DMD bugs, like the one with opaque structs which 
> required
> extensive work-arounds.
>   struct MyStruct;
>   MyStruct*[] = new MyStruct*[n];

I'm not sure this is a bug. How do you default initialize an 
array of structs you don't know the .init values of?


More information about the Digitalmars-d mailing list