8. Change Log
Build 1.0.80 (23 Apr 2024)
- New ECMA class-based JavaScript design
- Move fwt pods into separate repo
- Crypto JWT and JWK APIs
- Actor queue overflow limits
- Add Doc.elemFromPos, elemsFromPos
- Add Event.keyChar
- Add new dom HttpSocket API
- New concurrent Lock API
- Add Graphics.drawEllipse,fillEllipse
- Add Image.render and Image.write
- Fixes for Crypto EC keypair support
- Fix Time.minus 24hr boundary checks
- Allow mixins to have non-abstract fields if no storage required
- Fix Color HSL implementation to match browser behavoir
- Add MimeType.isText
- Add util::LockFile
- Redesign ES compiler to not generate code for every pod
- Include TypeScript decl file in pods with JS code
- Prompt support for jline 3
- #2909 RGB to HSL conversion
- #2912 remove Future.state
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 ofnet
- 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
andas
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