Latest build has been posted and online docs updated.
Build 1.0.48 is designed as a transition build to introduce a whole bunch of breaking changes. As much as possible I've attempted to leave old functionality in place with warnings to make transition as easy as possible. Although some changes like the new webmod is just simple clean break from the old API. There are also a bunch of new features.
I will be removing many of the deprecated features from hg tip over the next month, and things will be completely removed for build 1.0.49. If you have concerns about deprecation of Obj.type or bitwise operators (probably the two most contentious changes), then please try out this build with your code and see what you think.
Summary of Breaking Changes
The following is an overview of all the breaking changes:
There is a new script "adm/bootstrap.fan" which performs a one-step pull from hg and bootstrap build - see docTools.
For the most part this script works on Windows. I had to make a change for OS X which is not in the official distro - but you can fix your copy with this changeset. I was also having some problems with jar and temp files on OS X which we need to look into. But I was able to get far enough that all the complicated bootstrap stuff was setup, and I only needed to re-kick off buildpods. So if you want to take a look at this script then feedback and patches welcome.
AbstractMain
Nice new mini-framework for writing command line mains:
Despite those all, it looks like it's going to be a good changeset. I can finally test out the webmod system :-D
heliumTue 22 Dec 2009
I don't like the way @deprecated is implemented. I think it should take a string and report it in the warning.
@depicated = "Use method bar instead"
Void foo()
{}
ivanTue 22 Dec 2009
helium,
I think this information should be in fandoc, because:
sometimes there may be no one-to-one mapping
if you add @deprecated, you need to do rebuild anyway, so you can rebuild doc
fandoc allows to provide more information in fancy format
Of course, sometimes having some info in warning may save a bit of time, but I don't think it is noticeable
heliumTue 22 Dec 2009
sometimes there may be no one-to-one mapping
And sometimes there is. For example instead of
WARN Deprecated slot 'sys::Obj.type'
you could get
WARN Deprecated slot 'sys::Obj.type'. Use 'sys::Type.of' instead.
And if there is not you could give a reason why its deprecated, or just point to the docs. I think anything is better than nothing.
The more information the compiler can give me the better.
brianTue 22 Dec 2009
seems that link on the main page is not updated
Make sure you hit refresh after a build to see the latest changes to home page (especially if you are using chrome - its seriously aggressive in its caching)
I don't like the way @deprecated is implemented.
Andy agrees with you, so I will change it to be a string facet. I will make that change right before next build when I remove all the existing deprecated slots.
I can finally test out the webmod system
Definitely give it a whirl and see what you think. We've been using it now for the SkyFoundry system and I'm much happier with this design. It is much more manageable for gluing together subsystems.
brian Mon 21 Dec 2009
Latest build has been posted and online docs updated.
Build 1.0.48 is designed as a transition build to introduce a whole bunch of breaking changes. As much as possible I've attempted to leave old functionality in place with warnings to make transition as easy as possible. Although some changes like the new webmod is just simple clean break from the old API. There are also a bunch of new features.
I will be removing many of the deprecated features from hg tip over the next month, and things will be completely removed for build 1.0.49. If you have concerns about deprecation of
Obj.type
or bitwise operators (probably the two most contentious changes), then please try out this build with your code and see what you think.Summary of Breaking Changes
The following is an overview of all the breaking changes:
no-arg void closure #851
field setter #870
bitwise operators deprecated #870
deprecated Obj.type #869:
actors #848:
build:
fand renamed to util #841
json #796:
dom API changes #854:
web + webapp + webmod #836:
api renames for name consistency #855:
fwt #865:
IDE Links
There is a new chapter for links to IDEs
One-Step Bootstrap
There is a new script "adm/bootstrap.fan" which performs a one-step pull from hg and bootstrap build - see docTools.
For the most part this script works on Windows. I had to make a change for OS X which is not in the official distro - but you can fix your copy with this changeset. I was also having some problems with
jar
and temp files on OS X which we need to look into. But I was able to get far enough that all the complicated bootstrap stuff was setup, and I only needed to re-kick off buildpods. So if you want to take a look at this script then feedback and patches welcome.AbstractMain
Nice new mini-framework for writing command line mains:
util::AbstractMain
Int Byte Formatting
I kept finding myself wanting to print memory or file size in KB, MB, etc. You can do this now using the "B" pattern:
SQL
Sql now supports mapping timestamp, date, and time to their Fantom equivalents DateTime, Date, and Time.
Deprecated Facet
You can use the new
@deprecated
facet on a type or slot to output a compiler warning whenever it is used.IO Enhancments
Added endian support and InStream.readChar
Change Log
Build 1.0.48 (21 Dec 09)
~ | ^ &
ivan Tue 22 Dec 2009
Great! But it seems that link on the main page is not updated and points to http://fan.googlecode.com/files/fantom-1.0.47.zip. However link http://fan.googlecode.com/files/fantom-1.0.48.zip works
tactics Tue 22 Dec 2009
And so ends the month of breaking changes!
Despite those all, it looks like it's going to be a good changeset. I can finally test out the webmod system :-D
helium Tue 22 Dec 2009
I don't like the way
@deprecated
is implemented. I think it should take a string and report it in the warning.ivan Tue 22 Dec 2009
helium,
I think this information should be in fandoc, because:
@deprecated
, you need to do rebuild anyway, so you can rebuild docOf course, sometimes having some info in warning may save a bit of time, but I don't think it is noticeable
helium Tue 22 Dec 2009
And sometimes there is. For example instead of
you could get
And if there is not you could give a reason why its deprecated, or just point to the docs. I think anything is better than nothing.
The more information the compiler can give me the better.
brian Tue 22 Dec 2009
Make sure you hit refresh after a build to see the latest changes to home page (especially if you are using chrome - its seriously aggressive in its caching)
Andy agrees with you, so I will change it to be a string facet. I will make that change right before next build when I remove all the existing deprecated slots.
Definitely give it a whirl and see what you think. We've been using it now for the SkyFoundry system and I'm much happier with this design. It is much more manageable for gluing together subsystems.