Hunch

D and TextMate

April 30, 2008 by Rasmus, tagged d, osx, plugin, programming and textmate, filed under software

Example of the syntax highlighterIn combination with the Tango OS X package release I created a D bundle for TextMate. There is already a D bundle available from Macromates bundle repository, but it is extremely simple. I started out pretty simple too, but based the language parser on the Java parser.

However, I’ve been home reading Learn to Tango with D and after a while it started itching in my coding fingers – I re-wrote much of the TextMate bundle and it now has extensive support for all parts of the D language as well “knowledge” about all (non-private) exceptions, classes, structs and interfaces in the lastest version of Tango (0.99.6). What also might be considered a major improvement is the relatively vast number of helpers (snippets, command, templates). Click here for a list of the helpers. (as at the time of writing this) Integration with DSSS is supported through graphical build, run and clean commands. Inline documentation is handled as Javadoc thus writing comments in D makes use of all helpers exposed by the Javadoc bundle. This should probably be revisited in the future to comply with the exact specs of D’s version of inline documentation.

The D bundle for TextMate is now it’s own project. Download and install it directly:

svn co http://svn.hunch.se/rasmus/textmate/D.tmbundle/
open -a TextMate D.tmbundle

(Checking it out from the repository and importing it with TextMate)

If you like the color scheme in the screenshot above, why not grap a copy of it?!

svn co http://svn.hunch.se/rasmus/textmate/themes/ hunch-themes
open -a TextMate hunch-themes/Hunch-Dark.tmTheme

Tango 0.99.6

April 28, 2008 by Rasmus, tagged d, dsss, gdc, osx, programming, tango and textmate, filed under software

gdc-tango-0996

Tango 0.99.6 has just been released. I’m now part of the team and is maintaining the Mac OS X bundle, which was previously announced here.

General highlights in this release:

  • A thread pool module, thanks to Anders Halager
  • Root finding algorithms by Don Clugston
  • Updated for DMD 1.029
  • Universal binaries for Mac OSX

Updates to the Mac OS X bundle:

  • New version of GDC and Tango
  • Includes DSSS
  • Includes a TextMate bundle
  • Source code integrated into the Tango API documentation

Download

Since dsource.org has had alot of problems lately, I’ve put up a (temporary) mirror:
http://d.hunch.se/tango/0.99.6/

13

Say it in D

April 13, 2008 by Rasmus, tagged code, d, osx, programming and tango, filed under software

gdc-tango-installer-screenshot

I just released a true Mac-style simple installer package which gives you a complete D with Tango-programming environment.

Included is GDC with libgtango together with a complete set of D and Tango documentation as well as about 50 different examples with complete source code. Installs into standard paths and does not interfere with your current environment (using isolating prefix /usr/share/gdc). This package does not require Apple Developer tools, even though it is highly recommended.

D is a general purpose systems and applications programming language. It is a higher level language than C++, but retains the ability to write high performance code and interface directly with the operating system API’s and with hardware. D is well suited to writing medium to large scale million line programs with teams of developers. D is easy to learn, provides many capabilities to aid the programmer, and is well suited to aggressive compiler optimization technology.

/* Shows how to create a basic socket client, and how to converse
   with a remote server. */
import tango.io.Console;
import tango.net.SocketConduit,
       tango.net.InternetAddress;

void main() {
  // make a connection request to the server
  auto request = new SocketConduit;
  request.connect(new InternetAddress("localhost", 8080));
  request.output.write("hello\n");

  // wait for response (there is an optional timeout supported)
  char[64] response;
  auto size = request.input.read(response);

  // close socket
  request.close;

  // display server response
  Cout(response[0..size]).newline;
}