Blog Post

#963 Build 1.0.51

brian Sat 6 Feb 2010

New build is posted and the online docs updated.

This build contains the new facets design - see issues #936 and #958.

Doc Lib

The old docLib documentation has been moved into its respective pods. For example "docLib::Fwt" is now accessible as fwt::pod-doc. Every pod has a "pod-doc" page which you can define by creating a file called "pod.fandoc" as a peer to your build script. This should be a much better way for developers to distribute documentation with their pods.

Pod Builds

You no longer use a "pod.fan" file, instead things are back to the good old days when you just needed a "build.fan" file. See Build Pod for what things should look like now.

Pod Meta

Pods no longer support facets. Instead they use a simple props format of name/value pairs. See docLang for details.

Type Database

Indexed facets and the type database have been replaced with indexed props. This is a lower level of abstraction, but much more simple and flexible. Indexed facets such as custom URI handlers and compiler plugins now use indexed props.

Enums

All your enums now need to use enum as a positional keyword before class:

enum Foo {}  =>  enum class Foo {}

The enum keyword was released, and can now be used as an identifier (although can't be used by Java code obviously).

Facets

Facets are now normal classes - see Facets chapter. Unless you were declaring your own facets, simple mapping is:

@js            =>  @Js
@transient     =>  @Transient
@serializable  =>  @Serializable
@simple        =>  @Serializable { simple = true }
@collection    =>  @Serializable { collection = true }
@opt="usage"   =>  @Opt { help = "usage" }
@arg="usage"   =>  @Arg { help = "usage" }

Build

During this process I've basically rewritten the core BuildScript and BuildPod classes to make them simpler. The original code was written in 2006 and had a lot of oddities. There is no setup method anymore, you just set your fields in your constructor. I also moved dumpEnv to an option instead of a target. Also remember that @target is now @Target (and I had to rename the old Target class to TargetMethod).

Pod Zips

The internal structure of pod zips has been reorganized. All fcode is placed under a fcode/ directory. The binary pod.def file is replaced by meta.props which should make it more accessible to tooling.

Change Log

Build 1.0.51 (6 Feb 10)

  • Roll fcode version from 1.0.45 => 1.0.51
  • Change enum to positional keyword "enum class"
  • Rename build::Target => BuildTarget
  • Refactor build script design for facets and pod meta-data
  • Refactor pod format meta.props and fcode sub-directory
  • Replace Type Database with Env pod indexing
  • Move docLib chapter into their respectiive pods as pod-doc
  • #936: Symbols/Facet Redesign

KevinKelley Mon 8 Feb 2010

There is no setup method anymore

Note that the Build overview fandoc http://fantom.org/doc/docTools/Build.html#buildPod still has an example showing the setup method.

Anyway, good work, lots of new stuff to try out!

brian Mon 8 Feb 2010

Note that the Build overview fandoc http://fantom.org/doc/docTools/Build.html#buildPod still has an example showing the setup method.

Got it - thanks. If anybody else sees problems with docs matching new features just let me know (either post or just email me directly).

Login or Signup to reply.