RobotHaxe, a HaXe port of RobotLegs

550 views
Skip to first unread message

Michael Cann

unread,
Aug 18, 2011, 4:43:01 AM8/18/11
to robo...@googlegroups.com, David...@massiveinteractive.com
Hi Guys,

Just letting you know that David Peek from the HaXe mailing list has just submitted the first (as far as I know) port of RobotLegs for HaXe: https://github.com/DavidPeek/RobotHaxe

So far he has tried to keep the API as true as he can to RL 1.4 however he is hoping over time to introduce some more HaXe specific features such as Macros and generics over time.

He thinks the performance should already be better as the Injector doesnt use DescribeType, instead it uses HaXe's own rtti reflection mechanism: https://github.com/DavidPeek/RobotHaxe/blob/master/src/robothaxe/injector/Injector.hx#L185-254

I haven't had chance to take it for a spin yet, but im hoping to soon. This is great news for RobotLegs IMO as HaXe has multiple targets, php, js, cpp (iphone), AVM2 and c# and JVM are on the way. This means RobotLegs can now be said to reach all those platforms. 

David Peek

unread,
Aug 18, 2011, 5:34:14 AM8/18/11
to Robotlegs AS3
Hi Mike/RobotLeggers,

I thought better qualify that performance statement a bit before
anyone looks at the code too closely :P

I have done absolutely no performance testing or optimisation yet; all
I meant was that injection could, in theory at least, be faster as it
was avoiding the describeType API (which is slow from what I've
heard). In some areas the Haxe port will be in fact much slower as I
had to roll my own Dictionary class to get cross platform consistency.
Given the widespread use of Dictionaries in RL this is pretty
significant. I aim to eventually use dictionaries in Flash and the
home brew solution on other platforms.

I'm also not using the Haxe RTTI API as it has similar performance
issues to describeType. Instead I'm using macros to generate
additional field metadata at compile time. As metadata is stored as
"native" objects in static class fields there is no parsing at
runtime. The metadata is also customised to the needs of the injector,
so there's no digging around for the information you need.

I'll write up a more detailed guide to the port when I get a chance.
Any feedback/pull requests more than welcome :)

Best,
David

Shaun Smith

unread,
Aug 18, 2011, 9:54:36 AM8/18/11
to robo...@googlegroups.com
Awesome stuff David! This is really exciting, and thanks for the additional implementation details.

> --
> You received this message because you are subscribed to the Google
> Groups "Robotlegs" group.
> To post to this group, send email to robo...@googlegroups.com
> To unsubscribe from this group, send email to
> robotlegs+...@googlegroups.com
> for support visit http://knowledge.robotlegs.org

Shaun Smith

unread,
Aug 18, 2011, 11:50:45 AM8/18/11
to robo...@googlegroups.com
Howdy list! Shew it's been a while since I've posted. I just wanted to say a few things about the plans for RL2.

Towards the end of June a few RL devs met up in Spain to brainstorm. We couldn't invite everyone as it was at a holiday home and there simply wouldn't have been enough space! I regret that it may have come across as an "exclusive" gathering. That wasn't the intention at all. Also, keeping numbers down meant spending less time getting to know each other and more time focusing on the task at hand.

The actual issue that I want to address right now is that it seems like we are developing RL2 behind closed doors and not accepting much input from the RL community. And while that's partly true, at least at this point in time, there are a couple of good reasons for it.

The support forum and mailing list have provided a huge amount of valuable feedback regarding the pain points of RL1. Anyone who has used Robotlegs for an extended period of time probably has a good understanding of what works and what needs to be improved. Without an actual codebase to look at and talk about we might all end up talking around in circles for a very long time. Those kinds of discussions can be incredibly time and energy consuming. I want to avoid that. I want to take a stab at solidifying some ideas before opening up to the public for feedback and contributions. An application framework can aim itself in any direction and I think it's important to set the course (at least a little bit) before engaging in heavy debate.

To get an idea of where I, personally, would like to take the framework we need to understand where Robotlegs fits in to the Flash framework ecosystem.

There are some truly amazing frameworks out there that address all kinds of application development problems. Some are so flexible, configurable and powerful that reading through and understanding their documentation and code takes months and months of focused effort. That is great for developers who want complete control over every single aspect of their framework, down to the tiniest detail. But there is also value in a framework that is small enough to read and understand in a day. A framework that is compact enough to use on tiny projects but still powerful enough to solve 80% of the problems that present themselves when developing large, enterprise applications.

There is a sweet spot between too complex to understand and too simple to be useful. That's where Robotlegs fits in.

Robotlegs v1 was pretty close to hitting that mark. The parts that fell short were due to conscious decisions that I made for the sake of keeping the framework small, simple and fast. My attitude regarding these areas was roughly: "modularity - entirely possible, roll it yourself", "framework extensibility - simple, hack it in yourself", "defaults - I'll decided those for you, thank you very much". In practice, pushing these problems out of the framework and into your application code resulted in a lot of manual hacks and incompatible or fragile solutions.

I want to address those areas without Robotlegs becoming "a low level toolkit for building highly configurable custom frameworks that solve all manner of application development problems". There is power in extreme flexibility, but there is also power in prescription and convention.

I can't provided any dates for the unveiling of the RL2 skeleton or featureset. We're still in the early stages, tackling the high risk areas. As soon as there is something to look at and talk about you'll be the first to know!

John C. Bland II

unread,
Aug 18, 2011, 12:23:01 PM8/18/11
to robo...@googlegroups.com
Rock on!

---
John C. Bland II
Blog: http://www.johncblandii.com
Company: http://www.katapultmedia.com
Twitter: @johncblandii


Neil Manuell

unread,
Aug 18, 2011, 12:49:19 PM8/18/11
to robo...@googlegroups.com
fab, I'll wait :)

Michael Cann

unread,
Aug 18, 2011, 2:00:29 PM8/18/11
to robo...@googlegroups.com
Sweet! Good to hear from you Shaun, looking forward to whatever you guys have come up with!
Mike Cann
http://www.mikecann.co.uk/

Joni Bekenstein

unread,
Aug 18, 2011, 2:33:44 PM8/18/11
to robo...@googlegroups.com
Likewise down here in Argentina!

Daniel Swid

unread,
Sep 8, 2011, 9:04:32 PM9/8/11
to robo...@googlegroups.com
Looking forward to it ^_^

Andras Csizmadia

unread,
Oct 26, 2012, 8:46:19 AM10/26/12
to robo...@googlegroups.com
I'v started to port RobotLegs v2 for Haxe:
https://github.com/vpmedia/HaxeRobotLegs

Any help is appreciated.

Nick Collins

unread,
Jan 14, 2013, 12:49:01 PM1/14/13
to robo...@googlegroups.com
Where did it go?

Ondina

unread,
Jan 15, 2013, 5:37:36 AM1/15/13
to robo...@googlegroups.com, David...@massiveinteractive.com
Nick, are you asking about RobotLegs v2 for Haxe?

If so, here:
https://github.com/vpmedia/HaxePorts/tree/master/src/robotlegs

Ondina
Reply all
Reply to author
Forward
0 new messages