- Introduce new root scope per file for more consistent self
- Fix export const
- Add
<input number=bool>
for numeric inputs - Only prevent native click if tap was prevented
- Print out compiler warnings in imbac and webpack loader
- Pass through stdio configuration from imbapack to webpack
- Don't include comments by default in webpack loader
- Disallow cross-scope calling of root 'def' functions (breaking change)
- Don't silence input events for form elements
- Implement style.removeProperty on server
- Improve mount/unmount performance
- Fix webpack4 compatibility
- Improve svg support
- Suppress setValue for input and textarea while editing
- Fix duplicate attributes in serverside rendering
- Make popstate event notify schedulers
- Make event manager delay adding listeners until needed
- Optimize tag tree syncing
- Add support for event modifiers (e.g.
<div :keydown.enter.myHandler>
) - Add support for form input bindings (e.g.
<input[data:myField]>
) - Allow method definitions inside object literals
- Better error reporting from parser when running through
imba
cli - Add automatic cache pruning for loops
- Improve performance of setText
- Improve performance of non-keyed tag lists
- Implement radically improved inline caching strategy
- Improve overall rendering performance
- Allow all attributes on svg elements
- 25% smaller library (now 57k minified, 15k gzipped)
- Remove deprecated selector-syntax
- Remove deprecated methods on Imba.Tag (object,width,height,append,prepend)
- Remove deprecated methods on Imba.Event (keychar,keycombo)
- Remove deprecated Imba.isClient and Imba.isServer
- Allow reconciler to work with tag-like objects
- Make Imba.commit notify schedulers
- Make sure schedulers are correctly activated and deactivated
- Fix issue where process.version was not parsed correctly
- Fix variable naming issue when compiling with sourceMaps
- Fix let scoping where assignment is consumed by statement
- Allow ivar-syntax in plain objects
{@ivar: value}
- Allow direct ivar access through
object@ivar
- Compile to native
let
,const
andawait
unless--es5
is specified - Align
await
precedence with js - Support variable shadowing
- Fix fat-arrow template parsing
<div.item => ...
- Make
imbapack input.imba output.js
work without a config
- Introduce
module
keyword for singleton classes - Allow aliasing imports with
import x as y from ...
- Always escape attributes textContent when rendering on server
- Made Imbapack read options using the recommended way in Webpack 3.
- Made Imba.mount schedule the target by default (fix)
- Compiler returns correct location for classes and constants
- Enable experimental native async/await behind —es6 option
- Make imbapack commands platform-safe (GavinRay97 · pr#102)
- Deprecated implicit
Promise.all
wrapping of expr inawait *expr*
if expr instanceof Array
- Require 'imba' in each file - no longer depending on Imba being global
- Introduced imbapack as intelligent wrapper around webpack
- Introduced non-global tags
- Allow multiple adjacent tags inside for-loops
- Add
tag.mount
andtag.unmount
- Allow setting css inline
<div css:height=100>
- Deprecated selector syntax
- Deprecated various tag helpers
- Tons of bugfixes and improvements
tag.initialize
can now be defined / overridden- Dynamic flags
<div .{flag}>
works as expected - Added more missing attributes to html elements
- Allow defining properties with reserved names
prop watch:
now accepts a Function- Minor bugfixes
- Add trailing semicolon to IIFE wrapper (#67)
- Allow uppercase flags in tag (#64)
- Setters return self by default (#56)
- CLI will find index.imba, if exists within folder
- Improved serverside rendering
- Predeclare
_
in global scope
- Mixing tabs and spaces for indentation will now throw error
- Internal refactoring
- Moved internal build over to webpack
- Bugfix: source maps should work again
- Bugfix: compilation on windows finds correct path
- Fixed regression for awakening tags from client
- Add width/height getters for tags
- Add context getter for canvas
- Removed deprecated code in dom.events
- Add
Imba.Touch#tx
andImba.Touch#ty
for pos relative to target - Add Imba.Touch#capture for preventing all default behaviour of events
- Handle touchcancel correctly
- Deprecate Imba.Touch#suppress
- Bugfix: right-click caused havok with mousebased Imba.Touch
- Bugfix: watched attribute would not trigger correctly
- Removed IMBA_TAGS (must use Imba.TAGS)
- Groundwork for arbitrary namespaces for tags (and local/private tags)
- Added support for SVG
- attr definitions will preserve dash in generated setAttribute
- Removed description object for plain generated properties
- Allow nested tag definitions (local to the parent scope)
- Error now includes the relevant code/lines in message - contributed by @sleewoo
- Make scheduler register for next tick before running the current ticks
- Bugfix: Regression where methods with trailing comment did not parse
- tag(domnode) will awaken domnode as native type if the custom tag is not defined
- Bugfix: Parser should not treat
]
and)
as implicit functions (issue#34) - Allow methods without body to parse correctly (closes issue#35)
- Bugfix: Regression where indented return broke certain tag trees
- Bugfix: if branches without else does not return 0 when false (inside tag trees)
- Bugfix: Improved error reporting in terminal
- Documented more of the runtime/stdlib
- Adding prelim support for static analysis of tags,classes,methods++
imba analyze
now takes--entities
flag to export entities- Removed several undocumented and deprecated methods
- Cleaned up code UglifyJS warned about when minifying runtime
- Add failing test for known scoping bug (fix is underway for next release)
- Bugfix: temp vars were declared (but not used) in certain situations
- Added scheduler for an official/approved way to schedule rendering
- Reworked tag rendering to work with non-string textual nodes again
- Fixed yet another regression
- Throw error when trying to spawn undefined tag
- Fix regression with serverside rendering from 0.13.3
- Optimized rendering further
- Bugfix: native tags no longer spawn with empty class attribute
- Bugfix: wrong cachekeys in certain nested trees
- Bugfix: (cond && ) were not cached in static trees
- Bugfix: numerous edgecases with static trees
- cache tags in for-loops by default (inside static trees)
- call render in tag#commit by default
- Improved sourcemaps
- Tap and click events handled in more consistent manner
- Added version of compiler that can run in a WebWorker
- Various bugfixes
- Rework tag class structure
- Bugfix: safe call
object:key?.method
parses correctly - Added support for data-attributes through tag#dataset method
- Bugfix: parsing tags inside object literals
- Bugfix: methods with optional arg and block arg compiles correctly
- Bugfix: tag#prepend works for empty tag
- Internal refactoring
- Fix standalone compiler for browser
- Renamed packaged compiler from compiler.js to imbac.js
- Export standalone compiler to
Imbac
instead ofimbalang
- Returning self from default constructors
- Preliminary support for source maps (through
--source-map-inline
option for ̀imba watch
andimba compile
)
- Added
imba export-runtime
command to export the latest imba.js runtime. - Fix
imba watch
on Windows (issue #11)
- Don't single children in Imba.static
- Reworked how setHandler to bind directly to outer scope
- Guard against loading the library multiple times
- Added minified version of library and compiler
- Remove need for classList (to support ie9)
- Now caching static attributes on tags
- More improvements to reconciler
- Added window, document, parseInt, parseFloat as implicit global variables
- Fixed issue in dom reconciler
- Allow
new
andchar
as varnames tag#render
is called by default fromtag#build
- Slightly improved error reporting when using
:
in control-flow (like python) - Massively improved algorithm for reconciling dom trees (rendering for-loops etc will now be much more efficient) - contributed by @judofyr
- Fixed issue when requiring imba through browserify
- Add support for guarded loops:
... for x in ary when x > 10
- Add dynamic cachekey for tags using
<node@{mykey}>
inside loops - Add support for if/forin as first/only argument to implicit calls
- Fixed bug where for-in could not be the first/only indented child in a tag.
- Fixed regression with multiple nested parens in !(expressions)
- Improved error reporting from terminal
- Register 'module' as an automatic global variable, along with 'global', '__dirname', 'exports', 'console', 'process', 'setTimeout', 'setInterval', 'clearTimeout', 'clearInterval'. The timeout/interval are likely to be deprecated in next version.
- added support for shebangs to top of files.
#!/usr/bin/env imba
or similar shebangs will be kept and converted in the compiled js (to#!/usr/bin/env node
etc) - Improved preservation of linebreaks, and removal of parens in compiled code.