41
The HORN Package Manager 2 options for creating DSLs in .NET

The HORN Package Manager 2 options for creating DSLs in.NET

  • View
    221

  • Download
    2

Embed Size (px)

Citation preview

Page 1: The HORN Package Manager 2 options for creating DSLs in.NET

The HORN Package Manager

2 options for creating DSLs in .NET

Page 2: The HORN Package Manager 2 options for creating DSLs in.NET

Who Am I?

Page 3: The HORN Package Manager 2 options for creating DSLs in.NET

Why?

Page 4: The HORN Package Manager 2 options for creating DSLs in.NET

Show me the Pain

Page 5: The HORN Package Manager 2 options for creating DSLs in.NET

We Live On the bleeding Edge

Page 6: The HORN Package Manager 2 options for creating DSLs in.NET

Or Do we?

Page 7: The HORN Package Manager 2 options for creating DSLs in.NET

The Usual Suspects

ASP.NET MVCContrib

Page 8: The HORN Package Manager 2 options for creating DSLs in.NET

A typical Scenario ASP.NET MVC Moves From Beta to Release Candidate I use MVCContrib for the WindsorControllerFactory from CastleMVCContrib uses the trunk version of Castle

I use Nhibernate

Nhibernate is built against a different castle versionI use NhibernateContrib for NhibernateIntegration

I need rebuild NhibernateContrib with the rebuilt Nhibernate I use Rhino

Rhino references Nhibernate and Castle

Etc., Etc., Etc., Etc.

Page 9: The HORN Package Manager 2 options for creating DSLs in.NET

The Beleaguered ALT.NET Dev

Page 10: The HORN Package Manager 2 options for creating DSLs in.NET

The Treadmill of Change is Always

Turning

Page 11: The HORN Package Manager 2 options for creating DSLs in.NET

Building the Stack (Surely Not)C:\dev\Shared>cd NHibernate

C:\dev\Shared\Nhibernate>svn up

C:\dev\Shared\Nhibernate>cd nhibernate

C:\dev\Shared\NHibernate\nhibernate>nant

C:\dev\Shared\NHibernate>cd ..\..

C:\dev\Shared>cd Castle

Page 12: The HORN Package Manager 2 options for creating DSLs in.NET

Building the Stack (Surely Not)C:\dev\Shared>cd NHibernate

C:\dev\Shared\Nhibernate>svn up

C:\dev\Shared\Nhibernate>cd nhibernate

C:\dev\Shared\NHibernate\nhibernate>nant

C:\dev\Shared\NHibernate>cd ..\..

C:\dev\Shared>cd Castle

Page 13: The HORN Package Manager 2 options for creating DSLs in.NET

Building the Stack (Surely Not)C:\dev\Shared\Castle>svn up

C:\dev\Shared\Castle>nant

C:\dev\Shared\Castle>copy ..\NHibernate\nhibernate\build\NHibernate-2.0.0.Alpha1-debug\bin\net-2.0\*.* build\net-2.0\debug /y

C:\dev\Shared\Castle>nant

Page 14: The HORN Package Manager 2 options for creating DSLs in.NET

Building the Stack (Surely Not) And it goes on and on

Page 15: The HORN Package Manager 2 options for creating DSLs in.NET

A Maze of Dependencies

Page 16: The HORN Package Manager 2 options for creating DSLs in.NET

The Usual Suspects

ASP.NET MVC Contrib

We Need a Hero

Page 17: The HORN Package Manager 2 options for creating DSLs in.NET

Gentoo Portage

Page 18: The HORN Package Manager 2 options for creating DSLs in.NET

Package Tree Metaphor

Page 19: The HORN Package Manager 2 options for creating DSLs in.NET

Ebuilds

Page 20: The HORN Package Manager 2 options for creating DSLs in.NET

The Usual Suspects

ASP.NET MVC Contrib

Why not XML?

Page 21: The HORN Package Manager 2 options for creating DSLs in.NET

The Usual Suspects

ASP.NET MVC Contrib

XML is as “out” as

Flared Trousers

Page 22: The HORN Package Manager 2 options for creating DSLs in.NET

The Usual Suspects

ASP.NET MVC Contrib

Why an Internal DSL?

Page 23: The HORN Package Manager 2 options for creating DSLs in.NET

The Semantic Model

Page 24: The HORN Package Manager 2 options for creating DSLs in.NET

Source Control

Page 25: The HORN Package Manager 2 options for creating DSLs in.NET

Build Engine

Page 26: The HORN Package Manager 2 options for creating DSLs in.NET

(Horn DSL)== Ebuild

vs.

Page 27: The HORN Package Manager 2 options for creating DSLs in.NET

Boo is.....• An object oriented statically typed language

• An Open source project, released under the BSD license.

• A python inspired language

• A language with a focus on compiler extensibility

Page 28: The HORN Package Manager 2 options for creating DSLs in.NET

Duck Typing

Page 29: The HORN Package Manager 2 options for creating DSLs in.NET

Duck Typing

Page 30: The HORN Package Manager 2 options for creating DSLs in.NET

Macros

Page 31: The HORN Package Manager 2 options for creating DSLs in.NET

The Boo Horn DSL

Page 32: The HORN Package Manager 2 options for creating DSLs in.NET

Rhino DSL

Page 33: The HORN Package Manager 2 options for creating DSLs in.NET

Meta Methods

Page 34: The HORN Package Manager 2 options for creating DSLs in.NET

The Boo Compiler

Page 35: The HORN Package Manager 2 options for creating DSLs in.NET

CustomizeCompiler Method

Page 36: The HORN Package Manager 2 options for creating DSLs in.NET

IronRuby• .NET implementation of the Ruby language

• Seamless Integration with .NET libraries

• Compatibility with the 1.8.x branch

Page 37: The HORN Package Manager 2 options for creating DSLs in.NET

The IronRuby Horn DSL

Page 38: The HORN Package Manager 2 options for creating DSLs in.NET

Mixins

Page 39: The HORN Package Manager 2 options for creating DSLs in.NET

Method Missing

Page 40: The HORN Package Manager 2 options for creating DSLs in.NET

The Usual Suspects

ASP.NET MVC Contrib

Current State of Horn

Page 41: The HORN Package Manager 2 options for creating DSLs in.NET

The Usual Suspects

ASP.NET MVC Contrib

Questions