an open source extensible Flash™ runtime

Flirt is an SWF rendering library.

Flirt contains a parser for reading SWF format files, a rasterizer for rendering the vector shapes into bitmaps, and an actionscript engine. Just hook it up to a timer and you've got a player. Interface your system UI events into the hooks provided and it's interactive. Present your application code to the player as actionscript objects and you've got a scriptable, cross-platform UI.

Flirt is available under the BSD license, allowing for use in both open source and commercial projects.


06.01.21 - Source updated, patch applied

I've got the license text in CVS and replaced the GPL header in all of the source files. It's the standard two-clause BSD license: redistributions, source or binary, must contain copyright and disclaimer. And that's it.

As promised, I also merged in some fixes sent in by Olivier Houchard to make Flirt run better on FreeBSD and fixed a boneheaded freed memory access pointed out by Gabriel Gambetta.

Looking at the code again for the first time in almost a year, I'm floored by the sheer amount of it. wc puts it at around 23K lines of code. The app I've been working on at Panic for the last two years is around 50K LOC—though that's Objective-C, so it doesn't fill up as much space doing OO by hand. The point is, though, it's surprising how far I got on this, yet still came up so short. I only hope that with the new license it might be useful to more people and I'll have more to show for all the time I put into it. It's been a great learning experience and I'm certainly proud of what I've accomplished here—even if it's not quite enough.

06.01.19 - Free as in broken ..but free

I can't imagine I'll ever have the time to get it working right, and it's just falling farther and farther behind Flash. Since it may be useful for someone, and because I hate it when useful code is useless because it's got the GPL on it, I'm moving Flirt to a BSD license.

I'll try to get the new license text in this weekend along with some fixes sent in.

05.04.23 - Something new!

I hacked up an example of using Flirt with SDL, and fixed a few bugs I ran across while doing this. I also found that the code in CVS has been busted for the last six months, so, uh, sorry about that. It's fixed now.

All this is in CVS, not in the source download. I'll get a package built up at the end of the weekend when I'm done fixing things.

04.09.09 - Forgot to mention..

I checked in some fixes over the weekend to make inheritance (__proto__ and all that..) work.

04.08.22 - Extension API first release

The new release has an extension mechanism. This means you can build actionscript wrappers for native C code and do more with actionscript than you could in "normal" Flash. The Extension API doc describes this in more detail and shows how to build an object that renders a movie clip into a bitmap and saves it as a PNG file.

Also, I found that the Linux build didn't have the endian setting right out of the box. That's fixed, so ActionScript should work a lot better over there. (Though if you're running Linux on big-endian hardware, you'll want to change the define in the Makefile.)

Plus, I finally got my vacation photos online. I know you've been waiting for them!

04.08.12 - on SourceForge now

The SF project finally went through. Check the links to the left for mailing list and project page.

04.08.08 - oops

I forgot about testing this on Linux. Should work now. :)

04.08.07 - printf("hello world");

Well, here it is, the Flash player code I've been dabbling with off and on (but mostly off) for the last three years. It's not currently in a very usable state yet—I'm releasing it so I'll be more motivated to get it working, because it won't ever happen at the current rate of development.

How's development going, then?


I've got a day job that keeps me from spending more time on this. So, yes, by asking you for feedback on Flirt, I'm surrendering that last little bit of free time not spent in front of a computer.

I'm currently developing Flirt on OS X with Xcode, but it builds on the command line with GNU Make and runs on my x86 Linux box. Older versions ran on cygwin, using SDL for the graphics interface, and it probably won't take much work to get that running again.

So what do you want from us?

Feedback, bugs, ideas, suggestions. Is there anything you'd really like to see Flirt do (besides just, y'know, work)? Please let me know!

All content copyright (C) 2004 Dave Hayden except where noted otherwise.
Macromedia and Flash are registered trademarks of Macromedia, Inc. in the United States and/or other countries.
Sushi train!