Build 1.0.66

Posted by brian – Wed 19 Mar

Its been almost a year since we actually posted a build with all the latest changes. So I figured it was about time to to get a clean zip with all the tweaks, fixes, and enhancements we've added over the last 10 months.

Google code doesn't allow file downloads anymore, so I posted this build on BitBucket.

Couple notable new APIS...

FileStore

Read Full Post…

Official Hg Repo moved to BitBucket

Posted by andy – Sat 28 Dec 2013

The official Fantom hg repo is now hosted on BitBucket:

https://bitbucket.org/fantom/fan-1.0

We looked at doing this a few years ago, but felt it wasn't quite ready. Since then its turned into a very nice platform. And more importantly, dramatically simplifies how we can accept and review patches. So hopefully this lowers the bar for contributions.

We are no longer pushing to hg.fantom.org - and will be bringing that server down over the next week or two. So make sure you update your local repo to use BitBucket.

Read Full Post…

JVM Summit

Posted by brian – Sat 27 Sep 2008

I've been in Santa Clara this week for the JVM Summit. It has been a really fantastic experience. The group of attendees was all insanely smart and deeply into language, compiler, and VM design. The nice thing about the JVM Summit was that it was small enough that you got a chance to meet everyone. So it was quite cool to finally meet many of the people who previously I've only known through their blog persona.

I have tons of notes and comments in no particular order...

Fan Presentation

All the talks were video taped, and supposedly will be available - but who knows when that will happen. I gave a short presentation Wed on Fan, specifically on how we tackle portability between the JVM and CLR. You can download the PDF slides here.

Read Full Post…

Build 1.0.65

Posted by brian – Mon 20 May 2013

I posted a new build and updated the online docs.

This is mostly just a bug fix release with lots of fixes and minor enhancements.

Build 1.0.65 (20 May 2013)

  • Add build javacParams config option (#1765)
  • Fandoc abstract Test classes
  • WebOutStream: add header, footer, nav, section, article, aside
  • Convert SqlConn from class to mixin
  • fwt: AsyncTask
  • Locale default support for /etc/sys/config.props
  • Normalize Uri https, ftp ports
  • #1891: Fix fandoc images embedded in paragraph text
  • #2051: Opening Uri by its scheme handler
  • #2052: sys::Uri.encodeQuery does not conform standard
  • #2054: Problem of Reduced Stack Trace
  • #2121: Runtime error when using Map as a type
  • #2133: Errs on Service.start()
  • #2134: NullErr with Safe Invoke
  • #2139: Can not override method that returns This

Read Full Post…

The Name List

Posted by brian – Thu 14 Apr 2011

How many times have you sat around trying to think of a good name for a class or concept in your software? Good names are concise and unique across the system. But lets face it, coming up with names really sucks. So over the years I've been collecting a list of words to spark my imagine (often leading me to thesaurus.com for further refinement). I've been scribbling this list on a tattered sheet of paper. But now I am going to start maintaining the list on this page and share it with everybody! The names in no particular order:

Kit                 Bag                 Cache               Association
Product             Vector              Dock                PlugPoint
Client              Group               Blade               Transcript
Server              Mediator            Page                Share
Builder             Attach              Bar                 Stamp
Director            Register            Descriptor          Parcel
Manipulator         State               Selector            Resolver
Prototype           Strategy            Concern             Find
Clone               Tactic              Pod                 Discover
Adapter             Policy              Capsule             Learn
Wrapper             Cell                Catalyst            Routine
Target              Sage                Sealed              Pigeonhole
Iterator            Archetype           Coalesce            Baton
Cursor              Canonical           Classifier          Dialect
Traversal           Assembly            Sieve               Reaction
Observer            Backplane           Tub                 Liaison
Dependent           Plug                Depot               Vat
Publish             Receptacle          Tribe               Promise
Subscribe           Bank                Attribute           Future
Interest            Document            Facet               Mint
Aspect              Deed                Annotation          Shard
Any                 Part                Meta                Rendition
Terminal            Artifact            Record              Sketch
Term                Host                Info                Syllabus
Variant             Actor               Manager             Reduction
Materialization     Pathway             Session             Synopsis
Relationship        Responder           Connection          Verse
Role                Authority           Exchange            Stanza
Relation            Feature             Memento             Compass
Preview             Alias               Token               Blueprint
Res (Latin obj)     Bundle              Solver              Diagram
Track               Tracker             Constraint          Read/Write
Sector              Proxy               Originator          Encode/Decode
Vessel              Surrogate           Caretaker           Marshal/Unmarshal
Behavior            Shadow              Housekeeping        Inflate/Deflate
Stimulus            Subject             Cluster             Cue
Request             Ambassador          Guardian            Query
Response            Extent              Orphan              Morph
Timeline            Handler             Zombie              Digest
Tag                 Command             Struct              Hive
Operation           Action              Realm               Media
Narrative           Transaction         Domain              Agent
Bridge              Interpreter         Zone                Dimension
Abstraction         Context             Generalization      Axis
Implementor         Expression          Specialization      Monad
Composite           Widget              Envoy               Pose
Component           Field               Broker              Interior/Exterior
Leaf                Property            Portal              Manufacturer
Tuple               Template            Door                Factory
Decorator           Visitor             Gate                Kind
View                Element             Cyber               Species
Facade              Entity              Resource            Mold
Subsystem           Node                Organ               Rule
Flyweight           Catalog             Slice               Event
Colloborators       Fragment            Extension           Trigger
Aggregate           Block               <x>let
Collection          Segment             Moniker

Read Full Post…

Build 1.0.64

Posted by brian – Fri 21 Dec 2012

I have posted the latest build for download and updated the online docs.

The biggest feature in this build is what we have open sourced the webfwt. This is an awesome new pod that includes tons of FWT widgets designed for use in a browser making use of DOM and CSS.

Other than webfwt, this is mostly just a maintenance build with six months worth of fixes, tweaks, and minor enhancements.

Change Log

Read Full Post…

Fantom vs Kotlin (and other JVM langs)

Posted by brian – Wed 20 Jul 2011

I think when a new language like Kotlin is announced, every one's first thought is how is this different than X. In our case how is it different from Fantom?

I continue to be amazed by the proliferation of JVM languages. Part of me thinks this is a great thing. But at the same time, there seems to be a ton of work going into creating new things that don't seem have to meaningful differentiation. That said, I believe there is probably some very big philosophical differences between Fantom and Kotlin. I would say Kotlin is more akin to Groovy++, Gosu, or Java 1.8 with closures.

A language is as much what you leave out as what you put in. But syntax sugar tricks don't define a language because you can always add stuff like that without changing the basic semantics of the language. What really characterizes a language is the basic approach to fundamental issues like the type system, OO vs function paradigm, immutability, concurrency, standard library, modularity, composability, etc.

So here are some of my thoughts about what I think are major differences between Fantom and Kotlin:

Read Full Post…

Webfwt Open Sourced

Posted by andy – Fri 20 Jul 2012

Today we finally open sourced webfwt - and we decided to put it right in the core Fantom distribution! Webfwt is the browser specific extension to FWT we've developed over the last few years for our commercial software, SkySpark.

Almost the entire UI for SkySpark was built using FWT and Webfwt, so its quite a powerful library. There's quite a wide range of widgets available - just to name a few:

  • A real Hyperlink widget
  • A widget to directly inject HTML markup as content
  • Additional layout Panes
  • HUD style controls
  • Mini style controls
  • Popups
  • DOM optimized List widgets
  • Google Maps widget
  • CSS3 animated Transition Panes
  • Subclasses to FWT widgets (i.e. free form CSS for Labels)
  • OS X Finder-style ColTree widget
  • OS X style Sheet widget
  • Batch FileUploader
  • And more!

Anytime we create a new reusable widget, it will end up in this pod, so webfwt will continue to grow. Some widgets are currently marked @NoDoc since I don't consider the APIs stable quite yet. But things should be in order by the time we roll the next Fantom build.

Read Full Post…

Build 1.0.63

Posted by brian – Sat 16 Jun 2012

I've posted a new build and updated the online docs.

There isn't any major new features. But its been several months since I've posted a clean build and there have been tons of minor enhancements and fixes since the last build back in Feb.

I've made quite a few fixes to the Java FFI that seem to keep cropping up in the old build, so this build should rectify a bunch of those issues.

Couple changes to highlight:

Read Full Post…

User Defined Generics

Posted by brian – Thu 3 Mar 2011

Fantom has parameterized type support for List, Map, and Func (which interestingly means we have a great deal of compiler and runtime infrastructure for a generics type system). But we've never take the steps to turn this into a full blown generics system that any developer can use in their APIs. The omission of user defined generics is a re-occurring issue, most recently discussed ticket in #1393 and also some interesting discussion on Cedrics blog.

Generics seems to be an extremely polarizing issue, sort of like a political litmus test where a single issue might be said to unreasonably outweigh a balanced analysis of trade-offs.

This post is not a formal proposal for generics, rather I would like the share my thoughts and set the stage for the brainstorming on if and how generics should work in Fantom. I think they would be useful, and there are certainly cases where I wish for them. I view this is an engineering decision: examine the problem, brainstorm potential solutions, and then decide if the trade-offs in complexity versus functionality make sense.

Type System Background

Read Full Post…