8. Change Log

Build 1.0.79 (17 Jul 2023)

  • New yaml API
  • Zip.readEach, Zip.unzipInto
  • StrBuf.reverse
  • List.eachNotNull
  • Env.path
  • New util::FileLoc class
  • IpInterface.prefixSize
  • HttpReq.postFormMultipart
  • Convert File.copy to use NIO
  • Add WebRes.statusPhrase
  • Add Win.clipboardReadText,clipboardWriteText
  • Date toLocale support for quarter
  • Fix charset handling on wrapped InStreams
  • Enhance compiler to allow covariant dynamic calls
  • Elem.closest
  • Event.relatedTarget
  • New BuildPod "js" target to stage for Node.JS
  • JS support for file API when running in Node.JS
  • Deprecate Future.state in favor of Future.status

Build 1.0.78 (26 Apr 2022)

  • New graphics APIs: GraphicsEnv, Graphics, Image, Stroke, Paint
  • Canvas rendering via Elem.renderCanvas
  • New Java2D graphics implementation
  • Deprecate Font.metrics & DeviceContext in favor of Graphics.metrics
  • Deprecate Int/Float clip in favor of clamp
  • Duration.clamp
  • Str.eachWhile
  • WebOutStream.main
  • ConcurrentMap.getAndSet
  • dom: ResizeObserver

Build 1.0.77 (2 Sep 2021)

  • Distribution zip now shipped without tests
  • List groupBy, groupByInto
  • Move examples/js/ -> examples/webfwt/
  • Env.compileScriptToJs
  • Add new examples/js/ sample code for different JS use cases
  • New WebOutStream.initJs that deprecates WebUtil.jsMain
  • Move obix out of Fantom into Haxall repo
  • js: New formal Env.var initialization design for JS
  • js: TimeZone.cur now defaults to Env.var or queries browser for best match
  • js: Locale.cur can now be defaulted via Env.var
  • New asn1 pod
  • New crypto pod
  • New SocketConfig and TLS support in inet
  • #2652: List.groupBy()
  • #2798: JS Test Code

Build 1.0.76 (10 May 2021)

  • Allow This to be in any func param position as method param
  • Allow once methods to be used on const classes
  • Add once as new fcode bitmask flag 0x80000
  • BoolArray clear, eachTrue, getAndSet
  • Int.clip, Float.clip
  • dom: Elem.fromNative fix if already Elem instance
  • domkit: SashBox.onSashResize
  • WebClient.authBasic
  • Minor enhancements to compilerDoc APIs
  • #2488: Javascript - No warnings on func params
  • #2820: Proposal: once methods on const classes

Build 1.0.75 (24 Aug 2020)

  • Move repo from BitBucket to GitHub
  • List addNotNull, mapNotNull, findNotNull
  • Map addNotNull, mapNotNull, findNotNull
  • Deprecated List.addIfNotNull, Map.addIfNotNull
  • domkit: Add DropTarget.onLeave callback
  • Updates to original documentation
  • Actors now yield based on time instead of msg count
  • Actor improved diagnostics
  • ActorPool.balance experimental method
  • Future is now abstract
  • Pod flattenDepends, orderByDepends
  • Remove JS fixed sourceMappingURL in favor of SourceMap header
  • New web::FilePack class
  • Add opts to Zip.writeNext
  • New math pod
  • #2428: Remove actor message serialization
  • #2669: js: Ordered map is unordered after serialization
  • #2726: Serialising Nested Maps
  • #2770: JS: Type methods (undefined)
  • #2781: Proposal to remove Xmx512M as default option
  • #2809: JS: Depend.equals()
  • #2810: JS: Decimal.toStr()

Build 1.0.74 (2 Mar 2020)

  • Java 8 runtime required
  • Compiler support for Jigsaw Java 9+
  • Binary integer literals prefixed with "0b"
  • List/Map addIfNotNull
  • Buf.bytesEqual
  • Env.indexPodNames
  • dom: HttpReq.send support for sending DomFile as raw content
  • dom: HttpReq.onProgress callback
  • dom: allow Dialog.title to take Elem content in addition to Str label
  • dom: Event.fromNative
  • dom: Elem.scrollIntoView
  • domkit: Dnd support for DomFiles
  • domkit: DragTarget.onDragImage
  • Enhance Regex to support cross-platform flags
  • Update timezone database to tzinfo 2019c
  • web: WebRes.removeCookie
  • #2673: JS: Unimplemented methods on Pod.js
  • #2760: JS: Backwards compatibility issue
  • #2784: fan.sys.FileBuf.toDigest() bug

Build 1.0.73 (21 May 2019)

  • WebReq isGet, isPost conveniences
  • PathFile Java implementation
  • Prep for JDK 9 support

Build 1.0.72 (14 Mar 2019)

  • fanr: Eggbox is now the default fanr repo
  • Rework Java Buf APIs
  • dom: fix DomCoord to be const
  • dom: add Win.log
  • domkit: fix Tree.onAction to not fire on expanders
  • domkit: fix SashBox bug where nested resizable SashBoxs could throw NPE
  • domkit: fix SashBox Float.toLocale to use Locale.en to force . decimal
  • Date yesterday, tomorrow
  • List.containsSame
  • ext2mime: Add otf,ttf,woff,woff2
  • web: default SameSite attribute to "strict" on all cookies
  • #2711: FEP 1: fan build command line tool
  • #2724: Float.toLocale()
  • #2726: Serialising Nested Maps
  • #2730: BugFixes for domkit::ListButton
  • #2739: Lists of Lists

Build 1.0.71 (29 May 2018)

  • List.flatMap
  • concurrent: add ConcurrentMap
  • dom: add DomFile.ext
  • dom: add Geolocation API: geoCurPosition, geoWatchPosition, geoClearWatch, DomCoord
  • dom: add Elem.fromHtml
  • dom: fix Style.effective security exception
  • domkit: add GridBox.insertRowBefore, GridBox.rowIndexOf
  • domkit: add AccordionBox.isExpanded, expand
  • domkit: sdd Popup.fitBounds to verify overflow for async loaded content
  • domkit: support for MenuItem.disabled
  • domkit: add Combo.onItem to customize list items
  • domkit: FlowBox support for non-px gap units
  • domkit: SashBox support for non-px and mixed size units
  • domkit: rework SashBox resizable to use explicit divider children
  • inet: add broadcastAddrs to IpInterface
  • inet: add isLoopback and isSiteLocal to IpAddr
  • wisp: remove deprecated WispService.port field
  • wisp: allow session cookie name to be configurable
  • #2670: NodeRunner does not work on Windows
  • #2694: JS: Deserialisation bug

Build 1.0.70 (8 Nov 2017)

  • Require Java 1.7
  • js: Node.js-based NodeRunner now default js runtime for fant -js
  • graphics: new graphics API
  • dom: remove dom::Size; convert to float-based graphics::Size
  • dom: remove dom::Pos; convert to float-based graphics::Point; Move Pos.rel -> Elem.relPos
  • dom: formalize Elem attr vs prop; get/set routes to attr; trap to prop
  • dom: remove Elem.draggable (use elem->draggable)
  • dom: Win.confirm
  • dom: Win.scrollPos, scrollTo, scrollBy
  • dom: Doc.activeElem, Doc.head
  • dom: Doc.elem -> elemById
  • dom: Doc.exec
  • dom: Elem.attrs,attr/setAttr, Elem.prop/setProp
  • dom: Elem.clone, Elem.hasChildren, Elem.ns
  • dom: Elem.fromNative
  • dom: Event.get,set,trap
  • dom: HttpReq.withCredentials
  • dom: DomFile support
  • dom: Style.addPseudoClass
  • dom: Doc/Elem support for creating namespaced elements
  • dom: add Java peers for Elem,Style,Event
  • domkit: DragTarget.onEnd, DropTarget.onOver
  • domkit: add GridBox.removeRow, removeAllRows
  • domkit: change GridBox cell key "all" -> "*"
  • domkit: add Link.target
  • domkit: fix SashPane.sizes setter to update style
  • domkit: add WellBox
  • domkit: add ButtonGroup.enabled, inheritEnabled, onBeforeSelect
  • domkit: add Table.onHeaderPopup
  • domkit: add Checkbox.indeterminate
  • domkit: add TreeNode.parent,isExpanded methods
  • domkit: make TreeNode abstract; remove Obj field/ctor arg
  • domkit: add TreeNode.onTreeEvent support
  • New docDomkit manual
  • Add options to Zip deflate in/out methods
  • Fandoc support for explicit img size
  • Float.isNegZero, normNegZero
  • compiler: fix to check invalid coercion with shortcut assignments
  • fandoc: add support for horizontal rules
  • Make sys::TestErr public
  • concurrent: add Future waitFor and waitForAll
  • #1386: js: dynamic invocation of a slot inherited from a mixin
  • #1421: js: equality operators compile like assignments
  • #1986: Fanr pod cache out of sync with the FileRepo
  • #1988: Nullability problems with facet
  • #2090: JS: Abstract class creation
  • #2357: URI Encoding / Decoding
  • #2388: fandoc: Wrapping an image in a link
  • #2457: super.trap() in Javascript
  • #2483: Method.func.typeof is not parameterized
  • #2499: Compiler check for shortcut with Int to Float implicit cast
  • #2511: Check null safe chaining with shortcuts
  • #2519: Date/Time toLocale support for single quote literal
  • #2540: Edge cases and java.lang.VerifyError
  • #2551: New line char after Markdown links
  • #2577: js: missing Uri.hash implementation
  • #2592: VerifyError for value based null check in it-block ctor
  • #2620: Err.trace dump to stderr
  • #2629: Javascript: List.unique() throws NotImmutableErr

Build 1.0.69 (14 Jul 2016)

  • Initial domkit code
  • dom: Doc.onEvent, removeEvent
  • Buf.toFile to create in-memory "files"
  • Str.mult
  • Wisp: remove pipelining support
  • #2518: change readLine max to be null
  • #2528: FAN_HOME and fanlaunch.bat
  • #2536: NPE when compiling scripts

Build 1.0.68 (6 Apr 2015)

  • Windows replace exe launchers with batch scripts
  • Windows fansc service controlller
  • JsonOutStream: remove newlines from output
  • WispService.extraResHeaders
  • Doc: deprecate query, queryAll -> use querySelector, querySelectorAll
  • Elem: add Style type
  • Elem: trap support
  • Elem: deprecate hasClassName, addClassName, removeClassName -> moved to Style
  • Elem: deprecate name, val, checked -> use trap operator
  • Elem: deprecate first, last, prev, next -> firstChild, lastChild, prevSibling, nextSibling
  • Elem: deprecate find, findAll in favor of querySelector, querySelectorAll
  • Elem: add animate(), replace(), scrollPos, scrollSize
  • Elem: drag and drop API support
  • dom: add MutationObserver
  • dom: add WeakMap
  • DomEvent renamed to Event; rework API to use dom::Key
  • Map.getChecked
  • Win.hisReplaceState
  • Win.screenSize
  • JS compiler optimized closure call sites
  • JS source map support
  • JS support for compressed timezone database
  • HTTPS support for WispService
  • Rework WispSession to use immutable session maps
  • WebSocket prototype
  • Change Java emitter to raise exception in abstract factory methods
  • Range.eachWhile
  • Enhance Env.props to work with pods
  • Method.paramDef reflection (JVM only)
  • Immutable Buf support
  • Buf.pbk to add PBKDF2 support
  • Enhance Future API: state, complete, and completeErr
  • Deprecate Actor.sendWhenDone in favor for sendWhenComplete
  • InStream.readNullTerminatedStr
  • Bit I/O: OutStream.writeBits, InStream.readBits
  • MarkdownDocWriter
  • #1466: js: Func.arity is missing
  • #1591: JS RegexMatcher support
  • #2396: dom::HttpReq.send() should take nullable content
  • #2403: Returning Void
  • #2428: Actor deprecate support for serialized messages
  • #2436: Cannot parse .props file when first line is # comment
  • #2438: Handle quotes in Cookie per RFC 6265
  • #2453: js: MapType casting errs
  • #2454: Javascript Float.toStr()
  • #2455: Mixin vs Abstract in Javascript
  • #2501: ClosureFuncSpecs for non JS classes

Build 1.0.67 (8 Jan 2015)

  • Mark sys::Regex as serializable and add defVal
  • DateTime.fromJava add negIsNull flag
  • Add fandoc::FandocDocWriter
  • Add locale parameter to sys toLocale methods
  • CompilerInput.docTests
  • WebClient includes Accept-Encoding: gzip
  • Str.trimToNull
  • MimeType.parseParams accepts valueless attributes
  • DocElem redesigned parent/child APIs
  • File.list optional Regex parameter
  • Env.prompt and integrated support for JLine
  • Dom: Win.parent,top, Doc.query,queryAll, Elem.text
  • JavaScript compiler now includes all a pod's props files
  • Fwt: JavaScript impl for WebBrowser
  • Rebuild timezone database using tzinfo 2014h
  • Deprecate Buf.flush in favor of Buf.sync
  • Tweak locale dateTime formats to always include timezone
  • Enum support for facets on items
  • #1948: js: Pod meta-data not available in js
  • #2059: Ordered map is unordered after serialization
  • #2246: Java FFI: ClassFormatError: Illegal class name
  • #2256: Improve Map.make error message
  • #2257: # Comment in Fantom Property Files?
  • #2260: File.copyTo() overwrite func is passed the wrong file
  • #2265: Deprecated enum values
  • #2270: Wrapper object refs not immutable
  • #2325: document.querySelectorAll() in dom::Doc

Build 1.0.66 (19 Mar 2014)

  • Wisp support for secureSessionCookie config prop
  • ActorPool name
  • MimeType.parseParams fix for equals in value
  • BuildPod.compileJni added
  • Date, DateTime weekInYear and VVV formatting pattern
  • DateTime.hoursInDay
  • WispService.errMod
  • New inet APIs: MulticastSocket, IpInterface
  • OutStream wrappers default to charset of inner stream
  • Fix WispRes charset for non-persistent connections
  • InStream.avail
  • List.indexr
  • fwt-js: Improve mouseMove/mouseExit when exiting widget/browser bounds
  • webfwt::CanvasTable: rewrite for large table performance
  • FileStore API to check file system capacity
  • FileUploader.useMultiPart,headers
  • XParser charset sniffing
  • WebClient default receiveTimeout to 1min
  • MimeType.noParams
  • Redesign Num/Int/Float/Decimal formatting to use locale props
  • Add adm/tools/textadept and notepadpp
  • Image.write
  • Int.toRadix
  • GraphicsPath API
  • #1478: js: Invalid type order for sys pod
  • #1614: fwt-js: Parse order bugs for peer defs
  • #2147: Stack trace manipulation / filter
  • #2149: java.lang.ClassFormatError: Duplicate field name&signature

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

Build 1.0.64 (21 Dec 2012)

  • Move webfwt into Fantom core
  • BuildScript.applyMacros
  • fwt: Dialog.defCommand
  • FanClassLoader support for resource URLs
  • Fix sql::Statement.execute to return Row[] on result sets
  • Add StrBuf getRange, replaceRange
  • Fix fanr signature encoding from abs to rel URI
  • Suppress deprecated warnings from within deprecated type
  • Enhance JarDist to generate Main.boot method
  • Buf.crc
  • Add bin/msvcr100.dll
  • Upgrade SWT to 4.2
  • Add Time.plus/minus(Duration)
  • Keep InStream.readProps ordered
  • #1942: Err when making of err
  • #1960: Add List.removeAll
  • #2029: compiler bug - wrong non-nullabillity inference
  • #2031: json bug linebreak before comma crushed parser
  • #2043: Compiler NPE in static field assignment
  • #2058: No shutdownInput and shutdownOutput for inet::TcpSocket

Build 1.0.63 (16 Jun 2012)

  • Move dispose from Desktop to Color, Font, Image
  • Add util::FloatArray
  • Add IntArray, FloatArray sort
  • Add gzip factories to sys::Zip
  • FileWeblet gzip compression for text files
  • Propagate Widget.enabled down widget tree
  • Rename JVM MmapBuf to NioBuf
  • Map.getOrThrow, add UnknownKeyErr
  • flux: autoSaveTabOnClose option
  • flux: ensure FileResource can be overridden
  • Canvas.doubleBuffered
  • Add SocketOptions.connectTimeout
  • Add Text fg, bg colors
  • Add Key.minus method
  • @Js for Fandoc API
  • File.isEmpty to efficiently check for empty directory
  • Refactor JavaType to always preload the class
  • fwt-js: Table.onAction support
  • SmtpClient STARTTLS support
  • ObixMod batch op support
  • Add IpAddr.toNative
  • #1479: Cannot use strings inside string interpolation
  • #1788: Range Serialization from Fantom1.0.60 -> Fantom1.0.61
  • #1790: Fix Java dasm overloaded inheritance
  • #1792: Lenient compilation for once methods
  • #1844: sys::Field.get
  • #1862: WebReq.locales
  • #1862: Wisp set Locale.cur via WebReq.locales for request
  • #1885: the too-clever-editor bug
  • #1901: fwt::Tree does not repaint on refreshAll on OS X

Build 1.0.62 (24 Feb 2012)

  • Add gedit config file
  • Tweak compiler to omit fcode/types.def if no types
  • Refactor Compiler.depends
  • Redesign compilerDoc
  • Add localeTestMode for JS environment
  • Fix fanlauncher to work in Cygwin
  • Fix Decimal to handle non-terminating divide
  • SmtpClient SSL support
  • Zip limit checks
  • Add locale keys for Duration.toLocale
  • Require "d" suffix for Decimal literals
  • Fant can now run script files
  • Add classfile disassembler to compilerJava
  • Switch Java FFI to use disassembler instead of reflection
  • Fix resource handle to allow jars to be bundled with pods
  • Fix compiler/runtime to search dependencies for Java classfiles
  • Compiler check for type visibility for is, isnot, as, casting
  • Prototype for "fan.props" PathEnv
  • #1143: js: Method.call fails for some core types
  • #1385: js: sys::List API problems
  • #1577: js: exception when Map->size
  • #1652: js: Type.params not implemented
  • #1683: JS: Assignment operator complie error
  • #1684: JS: Call super field
  • #1718: Require func param types when used in slot signatures
  • #1722: Cycle-dependent pod
  • #1738: Ambiguous slot issue
  • #1776: Proposal: Enhanced Constructors
  • #1778: Map#findAll() and Map#exclude()
  • #1780: Enhanced Java Support
  • #1782: js: Support for overriding virtual fields
  • #1783: js: checks for type dependencies

Build 1.0.61 (17 Nov 2011)

  • Upgrade timezone database with zone info version 2011j
  • Generate apidocs for @NoDoc type/slots, but hide in compilerDoc
  • Add fwt::Clipboard
  • Add readme.html to distribution
  • WispService.addr to bind to specific IP interface
  • Add util::IntArray, util::BoolArray
  • Fix Java runtime class loading deadlock
  • Duration.min, max
  • Duration mult/multFloat, div/divFloat
  • WispService.maxThreads
  • ActorPool.maxMsgsBeforeYield NoDoc hook
  • Remove support for named supers on class types
  • Add ACC_SUPER to JVM emitted classes
  • Fix sql Col lookup to be case insensitive
  • Compiler check for chaining non-null safe call after null safe call
  • Env.indexKeys
  • Remove UriScheme.scheme method
  • js: convert fwt::Table to desktop style selection UX
  • js: Obj.hash default implementation
  • js: rewrite Map implementation; use Obj.hash; support key collisions
  • js: Map.caseInsensitive support
  • #1464: js: Obj.hash always returns 0
  • #1485: js: Map doesn't handle equal hash codes
  • #1494: JarDist - support for main(Str[]) params
  • #1556: Timezone support (ISO 8601) - doesn't support all formats
  • #1564: Compiler error on abstract Func
  • #1607: Fix List.size to not automatically change capacity
  • #1608: extending sys::Str with replaceMatch/replaceMatches
  • #1639: Confusing error report when variable error in a string.
  • #1654: Fix example doc hyperlinks
  • #1667: protected modifier provides internal access
  • #1676: compiler: Non-nullable field mytext must be assigned in ctor

Build 1.0.60 (1 Sept 2011)

  • WebClient.proxy support
  • JsProps.writeProps: include etc/xxx files
  • WebOutStream: thead, tbody, tfoot
  • WebClient: postFile
  • Finish up fanr infrastructure
  • New docFanr chapter
  • Process.kill and bit of Java rework
  • Web support and docs for Expect: 100-continue
  • Env.promptPassword
  • fwt-js: onKeyDown/onKeyUp support for all widgets
  • fwt-js: keyboard support for Table, Dialog, Button
  • fwt-js: onBlur/onFocus support
  • Add fwt/table.fan example
  • Fix fwt::Table view/model bugs
  • wisp::Main to run simple WebMods under Wisp
  • Add deprecation warnings for facet fields
  • New compiler apidoc format
  • New syntax pod
  • New compilerDoc pod
  • Fandoc: shift heading levels
  • Rework fluxText to depend on new syntax pod
  • Nuke old docCompiler
  • Remove doc target from build scripts
  • #1091: KeyDown not working in FWT/JS
  • #1558: js: DateTime.toHttpStr lacks JS implementation
  • #1576: Fix Java sys method reflection
  • #1617: Map.get returns default value for existing key if value is null

Build 1.0.59 (2 Jun 2011)

  • Remove support for deprecated readonly keyword
  • fwt::Cursor API
  • Graphics drawRoundRect, fillRoundRect
  • Allow null comparisons to fields inside an it-block constructor
  • Change default fields for LogMod
  • Fix Dialog commands button where always only OK
  • compilerJs: escape "name" for slots
  • compilerJs: fix reflection for escaped slot names
  • Fix Date.toLocale for DDD
  • WebOutStream.label
  • js: fwt::Button.image support, ButtonMod.sep support
  • js: fwt::ToolBar
  • Fix sys::Param to be const
  • fwt::Widget.addAll
  • Str.toCode escape control chars
  • Fix File.moveTo to create parent directory if needed
  • Improve Test.verifyEq failure msg for multi-line strings
  • Stand alone fwt::ScrollBar support
  • dom::Win.hisBack, hisForward, hisPushState
  • Str.toXml/OutputStream.esc change ' -> '
  • Make gfx::Brush const
  • js: fwt::Widget.onMouseWheel support
  • Initial fanr support
  • List.binaryFind
  • js: fwt::Widget support for add/remove EventListeners after Widget creation
  • Upgrade SWT from 3.5.1 to 3.6.2
  • js: fwt::Event.count,consume support, fixes for event bubbling
  • js: sys::Depend implementation
  • Change pod meta "build.time" -> "build.ts"
  • js: Facet support
  • js: full readObj/writeObj serialization support
  • Add standard pod meta tags for org, proj, license, and vcs
  • Rename dom::Event -> dom::DomEvent
  • #717: Err extend RuntimeException
  • #1331: Fix set assignment to work with value types
  • #1390: js: List of numbers sorting differs
  • #1419: js: safe field access
  • #1427: js: fwt.window.root possible error
  • #1448: Mmaped Buf end of stream issue
  • #1471: js: List.binarySearch and List.shuffle are missing
  • #1474: Ensure super only used with slot call
  • #1477: Report error if mixin has native methods
  • #1480: Map#map doesn't preserve ordered/caseInsensitive
  • #1482: Overriden non-nullable fields can be left uninitialized
  • #1496: fanx.interop.Interop.toFan/toJava
  • #1497: override with static field
  • #1501: ensure override has matching param default state
  • #1509: Horizontal mouse wheel support
  • #1512: ffi override once with array
  • #1526: Virtual methods in OutStream
  • #1534: Build problem when using java native code and PathEnv
  • #1543: Key.fromMask doesn't work for complex modifier
  • #1545: email "from" field error

Build 1.0.58 (4 Mar 2011)

  • Remove deprecated sql APIs (#1318)
  • Weekday.localeVals
  • js: fwt::ProgressBar
  • Add major world currencies to units database
  • Add service shutdown hook to AbstractMain
  • Desktop.callLater
  • List.shuffle
  • Rect.intersects, intersection, union
  • Graphics.clipBounds
  • Tree.bg, Tree.isExpanded
  • dom: Win.open, Win.close, Doc.out
  • Mark GfxEnv as NoDoc
  • Image.makePainted
  • #1139: File.copy: maintain permissions
  • #1156: Image API enhancements
  • #1369: Deprecate readonly keyword
  • #1375: Serialization type/slot reads too far
  • #1384: fansh Variables are always nullable
  • #1396: Java subclass method visibility widening disallows Fantom overriding
  • #1407: Better Error Messages
  • #1415: Cannot pass a closure to the enum class constructor

Build 1.0.57 (6 Jan 2011)

  • Rename sql::Col.of => type
  • Change how JDBC classes are preloaded by sql
  • Update timezone database
  • Add support for timezone aliases (tzinfo backward list)
  • FileMod: remove requirement that file exists, just return 404
  • Fix Map.add, getOrAdd handling of null values
  • Change Border.defVal from 1 to 0 width
  • Tighten up Num toLocale to reject invalid patterns
  • Add Subtype Substitution section to docLang::TypeSystem chapter
  • Improve closure performance making Func.params lazily loaded
  • js: Complete DateTime/Date/Time toLocale/fromLocale
  • sql: add support for sys::Decimal type
  • js: Deployment and running docs
  • Add sys locale files for most major languages
  • Remove deprecated slice methods (replaced by getRange)
  • #430: Bundle Java classes in pod
  • #1260: Seeding the random number generator
  • #1307: VerifyError with as/+ operator combo
  • #1308: Closures param names are not available at runtime
  • #1313: Require Operator facet on add for comma operator
  • #1314: Env.addShutdownHook
  • #1316: BorderPane not a subclass of ContentPane?
  • #1318: Sql API changes
  • #1326: Support for is/as operators on value-types
  • #1328: Str.in not working properly with Unicode
  • #1344: fansh doesn't handle Java FFI variables
  • #1345: Coerce in shortcut assignments
  • #1348: Make inet Sockets non-const classes
  • #1363: Obj.trap support for default args of null

Build 1.0.56 (11 Nov 2010)

  • Redesign Unit to be keyed by arbitrary ids list including symbols
  • Redesign Unit definition: fromStr -> define, find -> fromStr
  • Redesign unit database as simple text file
  • Add Unit.mult, Unit.div
  • js: Full Charset and Stream support
  • compilerJs: Wrap CondExpr in parens to preserve grouping
  • Float.isNaN
  • fwt::Monitor.dpi
  • WebReq.socketOptions
  • Remove deprecated json pod (use util)
  • #604: Operator overloading with multiple types
  • #1153: Wisp session data in db
  • #1212: overriding methods returning nullable java type
  • #1213: Returning null as Java array
  • #1215: Compiler error when setter method invokes the same setter of another instance
  • #1233: Widget.layout
  • #1248: Fix WispService shutdown to release port
  • #1263: Serialization of List/Map fields always use field type
  • #1268: Slot literal serialization
  • #1271: Java FFI mixin routers with primitives
  • #1273: Localization string interpolation
  • #1276: Uri.decodeQuery does not handle duplicate keys
  • #1279: ActorPool.maxThreads
  • #1284: Ensure closure parameters are named
  • #1287: JarDist accessing fan:// resources
  • #1293: Facet inheritance
  • #1297: Report variable names which conflict with imported types
  • #1301: Func.bind immutability

Build 1.0.55 (13 Sep 2010)

  • Enhance DateTime/Time pattern for AM/PM
  • dom: Win.sessionStore, Win.localStore, Doc.title
  • Remove obsolete support for * field storage operator
  • Add EnumOrdinalAttr to fcode format for enum fields
  • Java annotations support
  • Add DateTime chapter to docLang
  • #668: Java FFI - use Java annotations
  • #863: Java FFI issue: Failed to assign an value to arrays of Objects through FFI
  • #1114: Invalid field for tableswitch: compiler::FField
  • #1150: Require ++/-- to be on same line
  • #1183: Str as CharSequence and sys::List as java List
  • #1190: compile error on list of java arrays
  • #1191: Param default expr cannot access itself
  • #1192: Formalize type inference rules with parameterized generics
  • #1194: Disallow () call operator on non-func types
  • #1204: Don't allow |A->| function signatures
  • #1208: BootEnv should use ext classloader

Build 1.0.54 (14 Jul 2010)

  • Support for Java FFI Type->toClass
  • Fix WebClient to report port number in Host header
  • ObixMod abstract base class for server side functionality
  • Support for WebSocket Protocol Handshake HTTP 101 response
  • List.unique,union,intersection,moveTo support in js
  • Fix Float.equals to work consistent with == operator
  • Flush out Float/Range API in js
  • Add sql::Statement.limit
  • Ensure "{fan}/lib/java/ext" added to Java FFI classpath
  • Flush out docLang::Native chapter
  • Etc/Rel TimeZone
  • Change CompilerInput to accept files or dirs
  • Support for SS optional seconds in DateTime and Time formatting
  • Str: chars, fromChars
  • Change Obj.typeof to be non-virtual
  • #895: Allow () operator to be used on func fields
  • #1112: JarDist omitting .class file
  • #1127: Expand scope of illegal nullable to non-nullable errors

Build 1.0.53 (13 May 2010)

  • Fix boxed boolean JVM checks
  • Make Int.shiftr unsigned (Java >>> operator)
  • Add etc/sys/config.props support to fanlaunch bash script
  • Rewrite gfx::Gradient to support CSS3 model
  • Add Map.ordered support to .NET runtime
  • FWT patch to allow mounting under arbitrary SWT widgets
  • Make java primitive wrappers and java.lang.Class immutable
  • Fix LogRec.print to return Void (to match Java/C# signatures)
  • Fix FileLogger to include stack trace and use new non-null fields checks
  • Rework JavaTypes to delegate to Env for caching and loading
  • Func.arity
  • Implement Int/Float toLocale for javascript
  • Remove deprecated dom::Elem.x/y/w/h methods
  • TableModel and TreeModel changed from mixin to abstract class
  • Table sorting and column visibility
  • Improve Map support under JavaScript
  • Fix FileLogger/LogMod to write headers on open of new files per day/month
  • Compiler support for native classes
  • Allow CompilerInput to specify a custom CNamespace
  • #569: docCompiler gives |Obj| for |This| it-block
  • #965: Compiler TypeParser doesn't handle Java FFI
  • #977: New concurrent pod (move Actor)
  • #1031: StrBufOutStream does not delegate correctly
  • #1039: It not typed as Obj? correctly
  • #1045: Compiler check error for LoadMixinInstance
  • #1051: Gradient API
  • #1053: HTTP 1.0 request using chunked transfer encoding
  • #1055: Misc BNF grammar problems
  • #1056: It-block parameters have incorrect reflection signature
  • #1057: compiler bug in exprOrLocalDefStmt
  • #1060: Ensure Map types don't have nullable keys
  • #1066: Double ?? are allowed when defining type which should not
  • #1067: compilerJava - findMethods() patch
  • #1073: Storage operator
  • #1077: VerifyError when Safe Invoke is used to call java method returning int
  • #1079: ResolveImports: catch CompilerErr around resolveImportedTypes() call
  • #1080: BuildJava should allow specifiybg custom classpath/jars

Build 1.0.52 (24 Mar 2010)

  • Color: makeArgb, makeRgb
  • WebUtil.jsMain
  • Win: viewport, reload, onEvent
  • Elem: deprecate x,y,w,h; add pos, size, bounds
  • New concurrent pod
  • SqlService.lastAutoKey => Statement.execute
  • Tweak grammar to disallow chaining comparison operators
  • Change config API for FileLogger and LogMod to allow datetime pattern
  • Date/Time fromLocale - parsing with pattern
  • Default all ext2mime.props to assume charset=utf-8
  • Str: getSafe
  • Add util::CsvInStream and util::CsvOutStream
  • #762: fix sql API for auto-generated keys
  • #832: Runtime checking of non-nullable fields
  • #949: IllegalAccess in mixin field override
  • #986: Field initializer List and Map type inference
  • #994: java.lang.VerifyError on broken code
  • #995: If statement returned in a closure - Internal compiler error
  • #1032: Move json to util to match csv API
  • #1033: Why is not avilable type "Obj[]?[]" ?
  • #1036: Serialization of const fields

Build 1.0.51 (6 Feb 2010)

  • Roll fcode version from 1.0.45 => 1.0.51
  • Change enum to positional keyword "enum class"
  • Rename build::Target => TargetMethod
  • 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

Build 1.0.50 (2 Feb 2010)

  • Pod.loc => locale
  • Locale.get => Env.locale
  • Remove UriSpace
  • Change syntax of fan: URI scheme
  • Change flux options design
  • Change build symbols to be config props
  • Pod.files: now returns list, added Pod.file, now used fan: URI
  • Repo replaced with util::PathEnv
  • Remove readSymbols, writeSymbols APIs
  • sql::SqlService.autoCommit change to field
  • sql::Dialect - renamed some methods for consistency
  • lib/sys.props => etc/sys/config.props
  • JarDistEnv and JarDist build task
  • #753: JDBC drivers and preloading
  • #867: JVM ClassLoader per Pod
  • #935: Env API
  • #952: Jar Dist
  • #953: Fanp can't find a pod in a custom ${FAN_REPO}

Build 1.0.49 (27 Jan 2010)

  • Obj.type => typeof
  • List added: containsAny, moveTo
  • List removed: containsSame, containsAllSame
  • Buf.empty => isEmpty
  • Test.id => curTestMethod
  • Field.of, Param.of, Symbol.of, Pod.findType => type
  • DateTime, Time: isMidnight
  • DateTime, Date support for DDD pattern 1st, 2nd, etc
  • Integrate JavaScript compiler into main compiler pipeline
  • js: Int.toCode, toDuration, toDateTime
  • js: Remove Long support; use native Numbers for integers
  • compiler::Location => Loc
  • Remove methods deprecated in 1.0.48
  • Remove deprecated support for |,| closure syntax
  • Remove deprecated support for val in field setters
  • #749: compilerJs bug in list initializer
  • #750: JS: (Int?)null == (Int)0
  • #789: File upload support for web pod
  • #800: += operator doesn't work correctly in JavaScript
  • #849: Internal compiler error
  • #869: Obj.type => Obj.typeof
  • #870: Proposal: bitwise operators
  • #878: Use Native Number type for sys::Int on JavaScript
  • #883: Simplify standard build targets
  • #889: compilerJs Rework
  • #892: Proposal: using ?: operator with throw
  • #922: Don't allow one char scheme names in File(Uri)
  • #927: List API Changes

Build 1.0.48 (21 Dec 2009)

  • Fix List.insertAll error checking
  • Int.toLocale "B" pattern for formatting size in bytes
  • Add sys::deprecated facet and compiler warnings
  • DateTime, Date, and Time support in sql
  • Fix Uri.relTo(/) to remove leading slash
  • Change build::CreateZip.inDir => inDirs
  • Rename dom::Window -> dom::Win
  • Move dom::Win, dom::Doc to singletons
  • #768: Fan source to HTML bug
  • #796: Using Json to read/write Fan objects
  • #797: Setting const fields with reflection
  • #826: New docTools::IDEs chapter
  • #836: New WebMod API
  • #841: Proposal: fand to util
  • #844: List.getSafe
  • #848: Remove sys::Context
  • #851: Change |,| to |->|
  • #853: InStream::readChars
  • #854: Dom API cleanup
  • #855: Some API renames
  • #860: Range.offset
  • #861: compiler: fix Obj to Void coercion bug
  • #865: Make fwt::TreeModel.children non-nullable
  • #869: deprecate Obj.type, Type.loc, Type.log
  • #870: depreate bitwise operators ~ | ^ &
  • #873: InStream / OutStream endianness
  • #874: Field setters: val => it
  • #875: Add 1-step bootstrap script
  • #876: Source Doc Changes

Build 1.0.47 (17 Nov 2009)

  • Rename Fan to Fantom!
  • Range fromStr, isEmpty, min, max, first, last
  • List.eachrWhile
  • Map.getOrAdd
  • FWT javascript enhancements
  • Float.random
  • Range.map
  • Date.today and Time.now take optional TimeZone
  • Date firstOfMonth, lastOfMonth
  • Fix StrBuf.out anomalies
  • XNode.writeToStr
  • dom::Doc.cookies
  • Tweak compiler to hide private/internal default exprs in fandoc
  • Graphics: drawPolyline, drawPolygon, fillPolygon
  • JavaScript: proper type coercion
  • FWT Tree/Table onPopup support for Event.pos
  • Fix Future.get timeouts for OS X
  • js: Fully pass UriTest; encode/decode Uris properly in browser
  • Sys os, arch, platform
  • Upgrade SWT from 3.4 to 3.5.1
  • Redesign Java extension mechanism to use lib/java/ext/{Sys.platform}
  • #685: File naming bug?
  • #697: Remove & curry/partial apply operator
  • #731: Method calls should always require parens
  • #740: Cannot load 32-bit SWT libraries on 64-bit JVM
  • #743: Issues building from hg on Snow Leopard
  • #788: Coercion of indexed assignment shortcut
  • #806: can't read MapType from ObjectDeserializer

Build 1.0.46 (8 Sep 2009)

  • Closure variable redesign
  • Change JavaScript field naming model
  • gfx::Border
  • gfx::Pattern
  • Move Halign, Valign, Orientation from fwt to gfx
  • Color: alpha => a, makeHsv, h, s, v, lighter, darker
  • Obj.toImmutable
  • Err.trace now takes options
  • Fix chunked transfer encoding bug in wisp
  • DateTime.timeZone => tz
  • Func.curry => bind
  • WebClient.postStr
  • Fix fwt::ScrollPane to actually work
  • Compiler warning for curry & operator
  • #676: Compiler bug? walkback in closure type inference
  • #679: JVM - emit LocalVariable attr for debuggers
  • #710: Actor programming example?
  • #712: UI enhancements
  • #721: Cookbook versus Examples

Build 1.0.45 (24 Jul 2009)

  • Roll fcode version code 0x01_00_0034 => 0x01_00_0045
  • LoadSymbol opcode
  • Change field storage operator from "@" => "*"
  • fwt::Canvas support in IE using JavaFX
  • DateTime,TimeZone support for JavaScript
  • Fix Int.fromStr to work for signed 64-bit integers with radix 16
  • Split webappClient into sys and dom
  • Change all uses of javascript => js
  • Fix Str indexIgnoreCase/indexrIgnoreCase bug
  • Switch to new, more compressed timezone database format
  • #425: Separate pod install location
  • #558: DocCompiler - Facet Documentation
  • #564: Symbols
  • #606: Partial closure type inference?
  • #620: Dynamically controlled function types
  • #651: Type description of inferred function types
  • #657: Bug in docs with default arguments
  • #659: Rename sys::Namespace to sys::UriSpace
  • #663: wisp sluggish via apachebench
  • #664: Nullable params w/out name in func sig

Build 1.0.44 (25 Jun 2009)

  • Fix bug in WebReq.absUri
  • Fix webappClient to use Uri instead of Str
  • Remove old webServlet code
  • Regex.glob
  • Flux Goto File command
  • DateTime.toHttpStr use toLocale to avoid race conditions
  • FWT Canvas widget (Widget.make is now internal)
  • Graphics removed clipRect, drawPoint
  • fwt::Command.invoke final, override invoked now
  • Int.pow
  • List on JVM now uses backing store with typed array
  • Json fixes
  • Fix Wisp HTTP pipeling bug when no request body
  • JavaScript compiler enhancements for script support
  • 64-bit integer emulation in JavaScript
  • #612: Change signature of List.map and Map.map
  • #617: Compiler bug - traceback in switch with missing case expression
  • #618: Ambiguous method call on java object
  • #629: NoClassDefFoundError when accessing public static final field with JavaFFI

Build 1.0.43 (28 May 2009)

  • FWT port to JavaScript
  • Change default for value type local variables
  • Remove support for "..." range literals (replaced with "..<")
  • Add register parameter to sys::Log.make
  • ObixClient
  • #429: Triple Quoted Strings and DSL Str/Regex
  • #438: DSL Proposal
  • #532: Improved detection immutable closures
  • #578: Uri Interpolation
  • #595: Definite assignment of non-nullable fields

Build 1.0.42 (13 May 2009)

  • Tweaks to flux
  • Loosen restrictions on it/this ambiguity errors
  • webappClient::Effect
  • Disallow nullable types in as expression
  • Fix as with generics to work like cast
  • Rename ActorGroup to ActorPool
  • Move Point, Size, Rect, Hints, Pen, Color, Brush to gfx
  • Color/Font system color/font methods moved to Desktop
  • Date: isYesterday, isToday, isTomorrow
  • DateTime: nowUnique
  • Window: showTrim, activate
  • List: eachRange
  • Duration: nowTicks
  • StrBuf.grow => capacity
  • InStream.makeForStr => Str.in
  • OutStream.makeForStrBuf => StrBuf.out
  • Func/Method call => callList
  • Func/Method callx => call
  • fanx.sys.Interop utility methods
  • #518: Problem in check of reflective field set
  • #520: Flux Last Line
  • #527: Func.curry with optional parameters
  • #528: Compiler bug - duplicate slot x$num
  • #529: Private method in mixin bad classfile
  • #530: Ctor bug with default params
  • #531: Allow curry of private methods
  • #533: Fandoc bug
  • #534: RichText scrollbar bug
  • #542: Compiler - Internal class cast error
  • #543: Compiler - Chaining dynamic calls
  • #544: Move graphics API out of fwt
  • #545: Compiler bug: using ... as ...
  • #546: Packaging of Fan
  • #547: WebOutStream - FavIcon tag
  • #548: Flux bug - tabstops not quite right
  • #551: it and Str interpolation
  • #554: docCompiler bug with |,| signatures
  • #559: API request: sys::StrBuf.remove(Range)
  • #561: Compiler: Internal error - auto-cast of Func
  • #574: Request: Range.random, List.random
  • #591: Flux: View menu in NavBar for .fan files doesn't show
  • #592: Proposal: Method/Func call

Build 1.0.41 (11 Apr 2009)

  • It-Blocks
  • Comma operator for it.add
  • Closure type inference
  • Require return expr to be on same line
  • Duration: minVal, maxVal
  • Move jfan to sys/java; nfan to sys/dotnet
  • Change exclusive range from "..." to "..<"
  • Disallow it-block: Point, Size, Rect, Insets, Hints
  • Require it-block: Font
  • Rename def => defVal: Point, Size, Rect, Insets, Hints, Pen
  • Rename Locale.with => use

Build 1.0.40 (2 Apr 2009)

  • Added sys::Actor API
  • Added sys::Service API
  • Renamed UnknownThreadErr to UnknownServiceErr
  • Refactor fand to work with Services
  • SqlService API changed from Thread to Service
  • Image resize
  • ScrollBar added
  • ProgressBar.value renamed val

Build 1.0.39 (25 Mar 2009)

  • Remove dynamic types
  • Redesign sql::Row API
  • Int: minValue/maxValue -> minVal/maxVal
  • Uuid: removed createdTicks and created
  • Bool: toLocale
  • Date: toDateTime, midnight, plus, minus
  • DateTime: midnight, nowTicks
  • Decimal: toLocale
  • Duration: abs
  • Float: toLocale
  • Int: toLocale, toDuration, toDateTime
  • List: fill
  • Num: localeDecimal, localeGrouping, localePercent, localeInf, localeNaN
  • Map: any, all
  • Str: padr, padl, toLocale
  • Time: toDateTime, toDuration, fromDuration
  • Thread: loopCoalescing, stop/kill
  • Type: toLocale
  • Uri: toLocale
  • Tree: nodeAt
  • Table: rowAt, colAt
  • BuildScript: defaultTarget now defaults to first script declared
  • BuildPod: rename compileJavascript to javascript
  • WebOutStream: css->includeCss, js->includeJs, style, script
  • WebOutStream: change title,h1,h2,h3,h4,h5,h6 to use separate start/end tags
  • Reflection fix to inherit concrete slot over abstract slot if two choices
  • Fix buildall.pods to bootstrap correctly on Unix

Build 1.0.38 (15 Feb 2009)

  • Str: in, toBuf, toDisplayName, fromDisplayName
  • Buf: dup, fill, hmac
  • Duration, DateTime, Date, Time: toIso, fromIso
  • Map: ordered, join, setList, addList
  • Test: verifyNull, verifyNotNull
  • Type: make support for defVal
  • Type: emptyList
  • MimeType: charset, parseParams
  • Add toCode: Bool, Int, Float, Decimal, Uri, Duration, DateTime, Date, Time, List, Map
  • Unsafe wrapper class
  • New compilerJavascript and webappClient APIs
  • New obix API
  • Rework webapp APIs
  • Doc compiler support for @nodoc facet
  • Web Cookie refactor into const class
  • Web Cookie enforce name and value chars and use quoted string value
  • Web Cookie fix use both max-age and expires for cookies for IE and Safari
  • More linux timezone work arounds
  • Json fix for parsing top level array
  • Json.write API change
  • Flux add findInFiles into context popup of dirs
  • Flux fix undo/redo stack to check point on save
  • Flux syntax definition for ActionScript
  • Compiler allow single statement expression based return
  • Compiler allow const field to override a method
  • Compiler fix when local variable shadows field with storage operator
  • Compiler fix when using null safe call with no-leave primitive return
  • Compiler fix when calling super with default params results in stack overflow
  • Compiler fix allow mixins use const keyword
  • Compiler fix for once methods used with subclasses in same pod
  • Compiler fix for construction call against fromStr in super class
  • Compiler fix to check for dup method params and dup enum defs

Build 1.0.37 (11 Jan 2009)

  • Java FFI: array overrides of methods which use primitives or arrays
  • Java FFI: coerce sys::Func to Java interface with one abstract method
  • New sys::Date and sys::Time APIs
  • New sys::Unit API
  • New sys::Uuid API
  • New web::WebClient API
  • Wisp support for chunked transfers and persistent connections
  • Str isAlpha, isAlphaNum
  • OutStream sync
  • Allow closures in constructor to set const fields (same for static ctors)
  • Change Obj.trap arg signature to Obj?[]?
  • Flux enhancements for goto into, find, find in files
  • Protection checks to prevent internal types being used in public APIs
  • Expose sys::File ctor to allow new implementations
  • Optimize common MimeTypes to be interned
  • BuildScript dumpenv target

Build 1.0.36 (13 Dec 2008)

  • Java FFI
  • Use dotnet to denote .NET instead of net
  • Initial json API
  • Remove compiler support for for(...); and while(...);
  • DateTime toJava, fromJava
  • Reorganize icons
  • Fan launcher -fcodeDump option to disassemble a Fan script
  • List, Map eachBreak -> eachWhile
  • Emacs support adm/tools/emacs/fan-mode.el

Build 1.0.35 (14 Nov 2008)

  • Update documentation for nullable and value types
  • New docLib::Fwt chapter
  • New docLang::Deployment chapter
  • Turn on non-null coercion runtime checking
  • Allow function types const fields with implicit toImmutable
  • Allow any list or map type as const field via implicit toImmutable
  • New xml API
  • OutStream.writeXml
  • Fix compiler checking of internal types
  • Fix compiler auto-casting of function types
  • Fix compiler to disallow empty try blocks
  • Fix compiler to allow for(...); and while(...);
  • Fix compiler to include fandoc for enum defs
  • Enhance docCompiler to show overridden slot and inherited fandoc
  • Fwt: file and directory dialogs
  • Fwt: RichText line background styling
  • Flux: persist undo/redo stack between hyperlinks
  • Flux: allow drag and drop of files to hyperlink
  • Flux: highlight current line
  • Flux: show short filenames in console instead of full paths

Build 1.0.34 (24 Oct 2008)

  • Roll fcode version for value-type support
  • Bool, Int, Float are now value types
  • Disallow covariance with value types
  • Disallow === !== is isnot as operators to be used againt value types
  • Java runtime maps sys::Boolean to primitive boolean
  • Java runtime maps sys::Int to primitive long
  • Java runtime maps sys::Float to primitive double
  • Change semanatics of Float.nan compare to match JVM

Build 1.0.33 (13 Oct 2008)

  • Java runtime: fan.sys.Obj -> java.lang.Object
  • Java runtime: fan.sys.Bool -> java.lang.Boolean
  • Java runtime: fan.sys.Int -> java.lang.Long
  • Java runtime: fan.sys.Float -> java.lang.Double
  • Java runtime: fan.sys.Num -> java.lang.Number
  • Java runtime: fan.sys.Decimal -> java.math.BigDecimal
  • Nullable type support
  • Support for parameterized fields (sys::Map.def)
  • Add build::CreateZip task, buildall.fan handles dist zip
  • Fix RichText editor home/end to take whitespace into account
  • Change fwt::Image constructors
  • Add icons to flux history items

Build 1.0.32 (20 Sep 2008)

  • Remove support for old type literal syntax
  • Add adm/tools with fan support for various editors
  • Remove haven pod
  • Fix thread queue notify bug
  • Fix infinite loop in compiler bug
  • Fix race condition loading $Pod class
  • Fix win32 launchers to not require .NET
  • Fix compiler handling of unparameterized generic types like List
  • Fix adm/unixsetup script (mostly)
  • Breaking change to Uri.get (inserted base parameter before checked)
  • Breaking change Locale.prop -> get
  • Process API enhanced: join, out, err, in, mergeErr, and env
  • Int.equalsIgnoreCase
  • Str.indexIgnoreCase, indexrIgnoreCase
  • List.eachBreak, flatten
  • Map.eachBreak
  • Uri.sliceToPathAbs, isPathOnly
  • Pod.uri, loc
  • Type.loc
  • File.normalize now includes file: scheme
  • Require Namespace uris to be path only
  • New UriScheme naming design
  • New docLang chapters: Naming, Conventions
  • New docTool chapters: Flux
  • New docLib chapters: Flux
  • Refactor native methods in fwt
  • fwt::Command localization
  • fwt::Font metrics
  • New fwt::Dialog API
  • New fwt::Desktop and Monitor APIs
  • New fwt::TextWidget base class for Text and RichText
  • New fwt text selection and clipboard APIs
  • Flux prototype!

Build 1.0.31 (24 Aug 2008)

  • New leading whitespace rules for multi-line Str literals
  • Upgrade SWT to 3.4
  • Using statement support in serialization files
  • List.removeRange
  • Range.toList
  • Str.containsChar, trimStart, trimEnd, numNewlines, splitLines
  • StrBuf.join
  • Relax rules for const field types to allow Obj, Obj[], Obj:Obj
  • Change fwt callbacks to be EventListeners
  • Enhance fwt eventing
  • Key eventing and accelerators
  • New fwt::CommandStack API

Build 1.0.30 (30 Jul 2008)

  • Short construction call syntax Type(args)
  • FWT widgets: Combo, Tree, RichText
  • fwt::Command
  • GridPane enhanced, see tab in demo
  • File.listDirs, listFiles, walk, osRoots
  • Expand auto-cast to include any assignable type
  • Weblet.doGet,doPost,... => Weblet.onGet,onPost,...
  • webapp::Widget API changes
  • Add field default to fandoc
  • Change Uri.name to return "" instead of null
  • Rework sample code apps/ to examples/
  • List.binarySearch
  • New type literal syntax: Type#
  • Slot literals: Type#slot or #slot

Build 1.0.29 (18 Jul 2008)

  • New isnot operator
  • New null convenience operators: ?: ?. ?->
  • New FWT widgets: WebBrowser, Text, InsetPane, SashPane
  • FWT graphics: Pen, Brush, Gradient
  • FWT serialization support
  • New icons pod
  • Web view priorities
  • Require indexing open bracket on same line
  • Allow |->Int| to fit |->Void|
  • Sys.idHash
  • List.findIndex, indexSame, containsSame, containsAllSame, removeSame
  • Pod.log, Type.log
  • Str.split(Str) => Str.split(Int,Bool)
  • Compiler implicitly generates toImmutable for const List/Map/Type fields

Build 1.0.28 (25 Jun 2008)

  • Fix bug in threading flow control
  • Map.def
  • Update unix scripts to use bash
  • Fix timezone on unix when GMT offset
  • Require call open paren on same line
  • With-blocks support implicit call to add
  • Support @collection facet in readObj and writeObj
  • C# fixes including filtered catch blocks
  • Launcher exe and bash support for lib/java/ext
  • Fix closures inside once methods
  • Improved support for calling main
  • Rename some of the shortcut operators methods
  • New fwt pod which wraps SWT

Build 1.0.27 (28 May 2008)

  • Fix this return for mixins
  • Sanity check for bootstrap build
  • sys::MimeType, Uri.mimeType, File.mimeType
  • New email pod for MIME and SMTP support
  • Charset.make => fromStr (now serializable simple)
  • Thread.isService, findService
  • Fix fandoc blockquotes
  • Native fields
  • Allow non-storage fields in const class
  • Fix constructor, field init ordering
  • Allow single statement for try, catch, finally
  • Log.setLevel() => Log.modified
  • File.setModified() => File.modified

Build 1.0.26 (26 Apr 2008)

  • Require f suffix for float literals
  • Decimal type and literal syntax
  • Decimal API enhancements: InStream, OutStream, Num, Str
  • This return types
  • Update APIs to use return This return
  • Fix Firefox3 form handling
  • Allow this and super keywords in string interpolation
  • Fix various fandoc bugs seen on discussion forum

Build 1.0.25 (16 Apr 2008)

  • Fix Unix build problems
  • Sys.env is now case insensitive map
  • File.pathSep
  • Skip .NET compiles if not on Windows

Build 1.0.24 (14 Apr 2008)

  • Cleanup old ruby scripts
  • Cleanup docs

Build 1.0.23 (14 Apr 2008)

  • Weekday, Month increment/decrement
  • Enhance webapp steps
  • File support for checkSlash
  • New docs: Namespaces, Fandoc, Web, WebApp, Widget, Maps
  • LogStep for W3C extended log format
  • Haven enhancements - prepared statements
  • Duration boot, uptime, toLocale
  • Sys.diagnostics (mem, threads, classes)
  • Uri queryPlus and escaping fixes

Build 1.0.22 (30 Mar 2008)

  • web::Cookie support
  • WebSession support
  • Once methods
  • Func.curry
  • Slot, Field, and Method are now const
  • Make parameter names optional in function signatures
  • New Cookbook chapters: Reflection
  • Unix launcher scripts

Build 1.0.21 (10 Mar 2008)

  • Haven ORM engine
  • Type immutability
  • Doc meta-data, doc default expressions
  • File copyTo, copyInto, moveTo, moveInto, rename, open, mmap
  • Buf redesign -> MemBuf, FileBuf, MmapBuf
  • Redesign Resource -> Namespace
  • Uri pathOnly, relToAuth, plusName, tail -> slice, minus -> relTo
  • Allow const field set in ctor with-block
  • Rename test pods: testSys, testNatives, testCompiler
  • Move Windows executables from bin/win/ to bin/
  • Sys.compile and script caching
  • Coverage for .NET sysTests 364/375 - 97%

Build 1.0.20 (13 Jan 2008)

  • Fan shell
  • Type literal support in serialization syntax
  • More docs (docTools, docIntro)
  • Rework build scripts to use facets

Build 1.0.19 (30 Dec 2007)

  • Basic fand bootstrap
  • Tweaks to InStream.readObj
  • Logging APIs
  • File now subclasses Resource
  • WebService pipeline
  • Refactor Resource implementation
  • SysResources
  • Sys.appDir
  • Raw string literals
  • Regex regular expression API
  • Optimize pod/type lazy loading
  • Pod level user defined facets
  • Type database

Build 1.0.18 (13 Dec 2007)

  • Int, Str, Month, Weekday, DateTime localization methods
  • DateTime string encoding/decoding
  • Resource and MemResource APIs
  • Support final override modifiers
  • Int.random
  • Pretty stack traces
  • Tons of new documentation

Build 1.0.17 (5 Nov 2007)

  • Obj auto-casts to anything
  • Use serialization for thread messaging when not immutable
  • Dynamic methods
  • Buf: hex, base64, digest support
  • TimeZone database and buildtz script for importing Olsen database
  • Rename Time -> DateTime
  • DateTime ticks to date/time calculations
  • Locale API
  • Rename parse -> fromStr

Build 1.0.16 (11 Sep 2007)

  • Facets completed
  • Override implies virtual fix
  • Roll fcode version to support method var attributes

Build 1.0.15 (5 Sep 2007)

  • Serialization support
  • Simple literals
  • With-blocks
  • Refactor fcode attributes
  • New facet design

Build 1.0.14 (12 Aug 2007)

  • Add maxStack to fcode format

Build 1.0.13 (4 Aug 2007)

  • Indexed assignment expressions: x[y] += z
  • Buf no longer mixins InStream and OutStream
  • InStream and OutStream changed from mixins to classes
  • Fix case insensitive Map equality/hash
  • FileWeblet with ETag and Last-Modified support
  • Rewrite Uri with custom parser
  • Allow escape sequence in Uri literals
  • Uri decoding/encoding
  • Fix maxLocals, maxStack in emitter

Build 1.0.12 (17 Jul 2007)

  • InStream.eachLine
  • Covariant field overrides of methods

Build 1.0.11 (10 Jul 2007)

  • Java runtime dependency checking
  • Compiler dependency checking
  • MethodParam->Param, fieldField->of, paramType->of, returnType->returns
  • Split Func out of Method

Build 1.0.10 (7 Jul 2007)

  • Remove all the old Java based compiler code
  • Change Int intern to -256 to 1024
  • Major refactoring of compiler - fcode now implements namespace mixins
  • Ability to compile against any arbitrary dependsDir

Build 1.0.9 (1 Jul 2007)

  • Add: List.containsAll
  • Remove: Type.sourceFile, Type.lineNumber, Slot.lineNumber
  • Hidden: Field.getter, Field.setter
  • Dynamic types
  • Dynamic types emitter for subclass with type per instance
  • Dynamic fields
  • New sql pod using JDBC
  • New chapters: docLang::DynamicTypes, docLib::Sql

Build 1.0.8 (30 Jun 2007)

  • Add doc target to buildall script
  • Add StrBuf.remove, buff up test suite
  • DocLang chapters: Expressions, Statements, Exceptions, TypeSystem, CompilationUnits, Fields, Methods
  • InStream peek, peekChar, readStrToken
  • Changes to web API
  • New wisp pod with simple web server implementation

Build 1.0.7 (12 May 2007)

  • New inet pod
  • IpAddress, TcpSocket, TcpServerSocket
  • Str.equalsIgnoreCase, compareIgnoreCase, any, all
  • Time.now with tolerance
  • Time.parseHttp, formatHttp
  • InStream.readLine max parameter
  • Map cannot have null keys
  • Map.caseInsensitive
  • New fandoc pod to parse fandoc into DOM
  • New docCompiler pod to generate HTML documentation
  • Doc chapters: docIntro::Overview, docLang::Literal
  • .NET runtime support for most of sysTest

Build 1.0.6 (5 Feb 2007)

  • Make sys::Err const
  • Obj.isImmutable, List.toImmutable, Map.toImmutable
  • Slot.isConst for thread-safe methods
  • Thread API

Build 1.0.5 (21 Jan 2007)

  • Use () operator on sys::Methods as callx() shortcut
  • Curried methods
  • Use soft references for pod cache
  • InStream, OutStream.charset changed to abstract field
  • Float constants changed to static const fields
  • Fan.exe now uses Fan compiler to run scripts

Build 1.0.4 (14 Jan 2007)

  • Virtual fields
  • Move field accessor generation to Parser
  • Fix closures in field accessor methods
  • Fix multiple static initializer closures and scoping
  • Optimize if(true), if(false)
  • Fix indirect mixin router emitting

Build 1.0.3 (8 Jan 2007)

  • Fan launcher options (--v and --D)
  • Refactor Sys methods into respective classes
  • Field storage @ operator
  • Storage fcode flag

Build 1.0.2 (1 Jan 2007)

  • New pod format for pod meta-data and facets

Build 1.0.1 (1 Jan 2007)

  • First official build
  • Both old Ruby build scripts and new Fan build scripts

Dec 2006

  • CLR protected region support
  • Try finally blocks
  • Virtual fields (mixins support abstract fields)
  • Mixin reflection
  • Covariant return types
  • Change inheritance syntax to use colon
  • Named super calls
  • Const fields and const classes
  • Launcher C++ executables for Win32
  • Transition from Ruby build scripts to Fan build scripts

Nov 2006

  • Deprecate DupDown (dup_x1) opcode
  • Nested closure support
  • List.dup(), Map.dup()
  • Not a statement checking
  • Protection scope checking

Oct 2006

  • Props file and Sys.env
  • Constant folding in compiler
  • Compiler can finally compile itself!

Sep 2006

  • First Fandoc goes live on fandev.org
  • Precompiled Java bytecode mode

Aug 2006

  • Fan compiler does first end-to-end compile
  • Fanp disassembler ported from Java to Fan
  • Zip API

Jul 2006

  • Parser rewritten in Fan
  • Version API
  • Using/import statements
  • Facets
  • Uri API, refactor File to use Uri
  • Stub Time API

Jun 2006

  • Dynamic -> call operator
  • Try/catch blocks
  • Initial web API
  • String interpolation
  • CompareNull, CompareNotNull opcodes
  • Tokenizer rewritten in Fan

May 2006

  • Refactor Err to use Fan type system
  • Math methods for Int, Float
  • Switch statement
  • New character methods for Int, Str

Apr 2006

  • Tomcat integration
  • Field accessors
  • Enums
  • Charset I/O support

Mar 2006

  • Native methods
  • Superclass constructor chaining
  • Closures
  • I/O, List, and Map APIs
  • Mixins

Feb 2006

  • Refactor to use fcode intermediate format
  • Refactor local variables for .NET emit
  • Fandoc comments

Jan 2006

  • Generic types
  • Support for is and as operators
  • Type literals
  • Method parameter defaults
  • Unit test harness

Dec 2005

  • Redesign to use pure OO (everything boxed)
  • Type inference for locals
  • Duration literals
  • Shortcut operator overloading
  • Static initializers
  • Comparision operators
  • Constructors

Nov 2005

  • Casting
  • Primitive operators and auto-boxing (since removed)
  • String concat, unary operators, assignment operators
  • Local variables

Oct 2005

  • Original jblock and nblock native method design
  • Methods
  • Fields
  • Type checking
  • Method argument overloading (since removed)
  • New operator (since removed)
  • If, throw statements
  • Class aliasing (original Java/.NET integration strategy)

Sep 2005

  • Begin work on Java version of Fan parser
  • Compiler emits straight to Java bytecode or .NET IL
  • Basic expr compilation
  • Basic class, method support