Skip to content

Releases: gwtproject/gwt

2.13.1

Choose a tag to compare

@niloc132 niloc132 released this 19 Jun 19:15
9483b1b

This is a bugfix release to address four issues, one of which is a regression.

What's Changed

  • Permit failure to delete files on Windows, and close finished logs. This is a regression, caused by trying to use Guava to replace some bespoke utility classes.
  • Simplify RTA iframe loading in Firefox. This addresses a change in behavior in Firefox, although in most cases applications compiled with older versions of GWT should have a workaround automatically applied by Firefox.
  • Use Objects.equals to compare record fields for null support. As the current implementation of records was producing an incorrect equals method and this was a low risk fix, this was backported.
  • Include GWT version, commit in JFR output. This ensures that we have a baseline for compiled size improvements going forward.

Full Changelog: 2.13.0...2.13.1

GWT 2.13.0

Choose a tag to compare

@niloc132 niloc132 released this 11 Feb 19:40
b7117c1

Highlights:

  • Removed more old polyfills and IE-specific workarounds
  • Samples updated to use Maven, usually as multi-module projects
  • 2.13 is likely to be the last release where the compiler and dev tools run on Java 11
  • DevMode server defaults to only serving static files - projects that wish to use the old Jetty 9 launcher may specify -server com.google.gwt.dev.shell.jetty.JettyLauncher, but this is due to be removed. Projects should either split their server/client classpath, or switch to a ServletContainerLauncher that runs another server (https://github.com/niloc132/gwt-devmode-server-sample is an example project that can provide this)
  • Support -strict in test arguments, to more easily find compile issues in GWT libraries
  • JFR events added to replace SpeedTracer, support observability into compiler steps, permutation and fragment counts, and output size. Additionally, the gwt.jjs.dumpAst system property has been tweaked to support filtering, and generate more readable output
  • jaxb and xml-apis are now optional when using GWT's javax.validation support, set the gwt.validation.ignoreXml system property to avoid needing these
  • Improved JRE emulation tracking, listing not only supported APIs, but also document unsupported APIs with links to issues

Known bug:

  • We've had a report of errors on startup on Windows for DevMode/CodeServer, but most users haven't seemed to encounter it. We have a candidate fix, and will follow up with a point release when we gather more information and land it. See #10272 for more details

Breaking Changes:

  • String.split emulation changed to support Java 8 semantics with empty entries
  • Collectors.toMap throws exception when assigning a null value to a key, reflecting Java semantics (though not Javadoc)
  • AccessControlException JRE emulation removed

Bug fixes:

  • Correct handling for SwitchStatements without a containing Block by @niloc132 in #10027
  • Ignore all annotations in all scopes if source is missing by @niloc132 in #10021
  • Fix Window.onClosing() not work in GWT 2.12 by @InforBG in #10074
  • update gson to latest by @vegegoku in #10079
  • Allow lambdas in this()/super() to close over outer types by @niloc132 in #10078
  • Exceptions thrown when building GWT's AST should include context by @niloc132 in #10080
  • Unset config properties: System.getProperty should return default value or null (previously reverted) by @zbynek in #10096
  • Fix NPE when compiling records with static fields by @zbynek in #10134
  • Improving accessability - added aria presentation role for layout tables by @Lonzak in #10108
  • Switch exprs must be transformed rather than wrapped in statements by @niloc132 in #10122
  • make GWT epub friendly by @evoludolab in #10148
  • Disabling draft mode shouldn't force namespace=package by @niloc132 in #10164
  • Allow JsUtils.uncheckedCast to be inlined away by @niloc132 in #10165
  • Fix console log uses debug by @larzeni in #10139
  • Faster implementation of long and int rotation by @zbynek in #10187
  • Update Jetty to 9.4.58.v20250814 by @Lonzak in #10203

JRE Emulation enhancements:

  • Added Java 9+ emulation to
    • java.io.ByteArrayOutputStream
    • java.io.OutputStream
    • java.io.Writer
    • java.lang.Integer
    • java.lang.Long
    • java.lang.Math
    • java.lang.Number
    • java.lang.StrictMath
    • java.lang.String
    • java.math.BigInteger
    • java.util.BitSet
    • java.util.Collection
    • java.util.Map
    • java.util.Objects
    • java.util.stream.Collectors
    • java.util.stream.DoubleStream
    • java.util.stream.IntStream
    • java.util.stream.LongStream
    • java.util.stream.Stream
  • Cloneable added to
    • java.util.TreeMap
    • java.util.TreeSet

Deprecations and Removals:

  • The following classes have been deprecated for removal:
    • com.google.gwt.dev.util.log.dashboard.DashboardNotifierFactory - these have all been replaced by the new Java FlightRecorder functionality
    • com.google.gwt.dev.util.log.dashboard.NoOpDashboardNotifier
    • com.google.gwt.dev.util.log.dashboard.DashboardNotifier
    • com.google.gwt.junit.RunStyleSelenium - this doesn't appear to have been usable for many years, will be replaced with Selenium WebDriver support
    • com.google.gwt.dev.util.arg.ArgHandlerEnableGeneratorResultCaching
    • com.google.gwt.dev.util.arg.OptionEnableGeneratorResultCaching
    • com.google.gwt.dev.util.InstalledHelpInfo - replaced by GwtprojectOrgHelpInfo to link to documentation at https://gwtproject.org
    • com.google.gwt.dev.util.Util
    • com.google.gwt.util.tools.Utility
    • com.google.gwt.core.ext.debug.JsoEval
    • com.google.gwt.dev.util.PerfCounter
    • com.google.gwt.dev.util.PerfLogger
  • The following deprecated classes in gwt-dev have been removed:
    • com.google.gwt.dev.util.log.speedtracer.CompilerTypeEvent
    • com.google.gwt.dev.util.log.speedtracer.DevModeEventType
    • com.google.gwt.dev.util.log.speedtracer.SpeedTracerEventType
    • com.google.gwt.dev.GetJreEmulation
    • com.google.gwt.dev.SignatureDumper
    • com.google.gwt.dev.RunWebApp
    • com.google.gwt.dev.shell.log.ServletContextTreeLogger
    • com.google.gwt.dev.shell.WorkDirs
    • com.google.web.bindery.requestfactory.server.RequestFactoryJarExtractor
    • com.google.gwt.dev.ApplicationCreator
    • com.google.gwt.dev.util.arg.ArgHandlerDumpSignatures
    • com.google.gwt.dev.util.arg.ArgHandlerOutDir
    • com.google.gwt.dev.util.arg.ArgHandlerFragmentMerge
    • com.google.gwt.util.PreventSpuriousRebuilds
    • com.google.gwt.dev.codeserver.RecompileListener

New Contributors

For more detail, see the commit log.

GWT 2.12.2

Choose a tag to compare

@niloc132 niloc132 released this 03 Mar 15:39
4e95f40

Hotfix for two regressions in 2.12.

What's Changed

Full Changelog: 2.12.1...2.12.2

GWT 2.12.1

Choose a tag to compare

@niloc132 niloc132 released this 12 Nov 17:00
6217e81

Hotfix release to fix two issues, one regression and one impacting latest jsinterop-base versions.

What's Changed

  • Correct handling for SwitchStatements without a containing Block by @niloc132 in #10034
  • Ignore all annotations in all scopes if source is missing by @niloc132 in #10035

For more detail, see the commit log.

GWT 2.12

Choose a tag to compare

@niloc132 niloc132 released this 29 Oct 13:42
0056242

Highlights:

  • Added support for Java 12-17 language features, including text blocks, instanceof pattern matching, records, and switch expressions.
  • Minimum Java version 11 is required to run any dev tools, though the server code should continue to function with Java 8 for this release. Later versions may no longer support Java 8.
  • Added support for sourcemaps to include the contents of the sources files.
  • Enabled sourcemaps by default in all browsers
  • Fix CSP issues in linkers and dev mode, provide CSP workarounds for GWT-RPC payloads

Bug fixes:

  • Remove first character for delegating args to CodeServer (#9940)
  • Fix error initializeEnumMap() is exceeding the 65535 bytes limit (#9954)
  • Relax naming rules to allow valid java bean properties as jsproperties (#9875)
  • Allow SDM's web server to reuse a socket without waiting (#9946)
  • Each mapped stream must be closed after its contents have been placed… (#9949)
  • Fix native JsMethods with varargs called from Java varargs methods (#9957)

JRE Emulation:

  • Add Java 10 Collections APIs (#9904)
  • Add Java 9 BigInteger constructors (#9953)
  • Normalizer emulation (#9970)
  • String method emulation for Java 11, align Character.isWhitespace with Java 11 (#9975)
  • Implement java.lang.Math.nextAfter, nextUp, nextDown (#9978)
  • Added missing IOException to Reader.read(...) methods (#9933)
  • Support ElementType MODULE and RECORD_COMPONENT on annotations (#10002)

Deprecations and Removals:

  • The unload event has been deprecated in browsers, deprecated calls that require it, and rewrite calls that shouldn't need it. Deprecated methods have notes describing how to replace them with more modern strategies.
  • The mousewheel event has been deprecated in browsers, its usage in GWT has been replaced with the wheel event. This should be transparent to applications.
  • The com.google.gwt.dev.GetJreEmulation main class has been deprecated, and is planned to be removed in a future release.
  • The com.google.gwt.dev.RunWebApp main class has been deprecated, and is planned to be removed in a future release.
  • The SpeedTracer classes have been deprecated, and are planned to be removed/replaced in a future release.
  • The deprecated -XfragmentMerge flag no longer has any effect, to be removed in a future release.
  • The following deprecated, unused flags have been removed:
    • -XdisableUpdateCheck/-XcheckForUpdates
    • -incrementalCompileWarnings
    • -Xlibraries
    • -XoutLibrary, -Xlibrary
    • -Xlink
    • -missingDepsFile
    • -overlappingSourceWarnings
    • XstrictResources, enforceStrictResources
  • The following deprecated, noop main() classes in gwt-user have been removed
    • com.google.gwt.user.tools.ApplicationCreator
    • com.google.gwt.user.tools.ProjectCreator
  • The com.google.web.bindery.requestfactory.server.RequestFactoryJarExtractor class is no longer included in any release jars.

For more detail, see the commit log.

GWT 2.10.1

Choose a tag to compare

@niloc132 niloc132 released this 09 Jan 13:20

Backported a fix from 2.11 to disable JPA/JDO "enhanced classes" serializable
by default for GWT-RPC, and added a warning when it is in use. For more
information, see #9709.

GWT 2.11

Choose a tag to compare

@niloc132 niloc132 released this 09 Jan 18:41
7f76f0f

Highlights:

  • Transitioned to GitHub pull requests for new contributions, with nightly builds running on GitHub Actions.
  • Added release artifacts for jakarta.servlet packages for both RequestFactory and GWT-RPC.
  • Tested support for running on Java 21. This is likely to be the final minor release series to support running on Java 8.
  • Disabled JPA/JDO "enhanced classes" serializable by default for GWT-RPC, and added a warning when it is in use.
  • Updated JRE emulation to support Java 11 for Collections, streams, and more.

Bug fixes:

  • Make custom field serializers ready for Java 17 (#9791)
  • Correctly write Long.toBinaryString as an unsigned value (#9769)
  • Fix gzip encoding of responses in the CodeServer (#9766)
  • Avoid EmptyStackException in SOYC (#9808)
  • Fix error reporting for System.getProperty magic method nodes (#9812)
  • Fix ClassNotFoundException when running JettyLauncher with Java 9+ (#9822)
  • Avoid StackOverflowError in TypeUtils#resolveGenerics (#9858)
  • Avoid document.write in Chrome with iframe linker (#9836)
  • Avoid document write in single script linker loading (#9847)
  • Handle ternary intersection types (#9799)
  • Fix for namespace="" names that clash with variable names (#9867)

JRE Emulation:

  • Added new Optional methods: or(), stream(), ifPresentOrElse(), empty(), and orElseThrow()
  • Added List/Set/Map of() methods
  • Added Predicate not() method
  • Added Collectors methods: flatMapping(), filtering(), toUnmodifiableList(), toUnmodifiableSet(), and toUnmodifiableMap()
  • Added Stream methods: dropWhile, takeWhile, and iterate(seed, hasNext, next)
  • Added Enumeration.asIterator()

Deprecations:

  • Using DevMode as an application server is deprecated, and may be removed or changed in a future release. Please migrate local development workflows to using a general purpose server, or a custom ServletContainerLauncher.
  • The webAppCreator tool is deprecated, please refer to https://www.gwtproject.org/gettingstarted.html.

Miscellaneous:

  • Update chrome/firefox globals to latest
  • Updated Javadoc to run on Java 9+, support search
  • Removed unused scripts from old build wiring

For more detail, see the commit log.

GWT 2.10.0

Choose a tag to compare

@niloc132 niloc132 released this 09 Jun 19:41

Highlights

  • Updated to HtmlUnit 2.55.0 and Jetty 9.4.44. With this newer HtmlUnit build comes support for Promise in unit tests, and the browser strings that can be specified when running tests are "FF", "Chrome", "IE" (for IE11), "Edge", and "Safari".

  • Tested support for running on Java 17, dropped remaining support for running on Java 7.

  • Maven groupId is formally changed to org.gwtproject, projects should take care to ensure they are using either the old com.google.gwt:gwt BOM or the new org.gwtproject:gwt BOM to sure that Maven or Gradle correctly handle this change. This will be the last published version using the com.google.gwt groupId.

  • Dropped support for IE 8, 9, and 10.

Bug fixes

  • Correct Long.hashCode semantics
  • Support CLASSPATH environment variable when creating child processes, fixing a bug where Windows could fail with a long list of arguments.
  • Use Function.name instead of displayName to support visible method names in Chrome 93+.
  • Allow stack traces to be available in Chrome when loading scripts from a remote origin.

JRE Emulation

  • Added OutputStreamWriter emulation.
  • Support StringReader mark() and reset() methods.
  • Added StrictMath emulation.
  • Added BufferedWriter emulation.
  • Added incomplete PrintStream emulation.
  • Add Charset.defaultCharset() emulation.
  • Improve BigInteger emulated performance.
  • System.nanoTime() emulation with performance.now().
  • Added Optional.isEmpty emulation.
  • JRE Emulation improvements/simplifications to facilitate J2CL's WASM support. Note that these do not always offer specific improvements to GWT itself, but helps to keep the codebases consistent.

Miscellaneous

  • Add support to compile GWT itself in Java 9+.
  • Improve compiled code size for applications that never use streams, by avoiding referencing streams from Throwable.

For more detail, see the commit log.

GWT 2.9.0

Choose a tag to compare

@niloc132 niloc132 released this 09 Dec 01:40

Highlights

  • Able to compile projects with jsinterop-base 1.0.0, elemental2 1.0.0, and
    jsinterop-annotations 2.0.0. With the exception of @JsAsync and @JsEnum, this
    brings GWT2 to be compatible across these tools with J2CL.

  • Added support for Java language levels 9, 10, and 11.

  • Officially, support is dropped for running the GWT compiler or server-side
    tooling on Java 7. The GWT distribution is still compiled to run on Java 7
    for this release, but no guarantees are made about whether or not this will
    work. Future versions will compile bytecode for Java 8+. The release was
    tested and found to work cross platform when run with Java 8, 11, and 14.

Deprecations

  • Elemental has been officially deprecated - it is still included in this
    release, but may not appear in future releases. Instead, we encourage the use
    of the Elemental2 libraries, which are compatible with both GWT2 and J2CL.
  • Removed NoSuchMethodException emulation.

Bug fixes

  • Fixes Arrays.binarySearch semantics for float[] and double[]
  • Adds Support multi-line messages in errors/exceptions
  • Adds shutdown hook in DiskCache to clean up temp files
  • Cache Gecko version to lower CPU usage on FireFox
  • Do not assume that "this" is always non null.
  • Updates globals for Firefox version 60.0.2, Chrome 66.0.3359.45
  • Fixes String.regionMatches.
  • Native JsMethods allowed to coexist with implementations with the same name.
  • Make sure lambdas box, unbox and insert erasure casts when necessary.
  • Negative zero treated properly in Double/Float.compare()

Miscellaneous

  • Updates CLDR to version 34.
  • Arrays now implement Cloneable
  • Link backing errors together with a cause attribute, start tracking
    suppressed errors in addition to the cause in underlying error object.
  • Add AtomicReference to gwt/emul.
  • Propagate script nonces via ScriptInjector
  • Add partial emulation for ExecutorService and ScheduledExecutorService
  • Emulate java.util.concurrent.Flow
  • Emulate javax.annotation{,.processing}.Generated
  • Make sure "goog.global" is $wnd if not defined.
  • Add when-linker-added element definition
  • Add Reader and StringReader emulation.
  • Remove GWT version check.
  • Do not show "unusable-by-js" warning for synthetic methods.
  • Update unmodifiableList to throw on Java8 methods.
  • Disable DataflowOptimizer by default and emit a warning when used

Full Changelog: 2.8.2...2.9.0

GWT 2.8.2

Choose a tag to compare

@niloc132 niloc132 released this 09 Dec 01:41

Highlights

  • Supports running in Java 9. Note that this does not yet mean that GWT can
    compile Java 9 sources, or support the Java 9 JRE changes, but that a Java 9
    JRE can be used to compile a GWT project. Do note that the new --module-path
    flag is not supported, but -classpath must still be used as in the past.

  • Chrome 61 removed functionality that had been used for reading the absolute
    top/left values. The internal implementation has been updated to reflect modern
    standards.

  • Uncaught exception handler will now receive all errors on the page, as handled
    by window.onerror. This may potentially be a breaking change if there were
    misbehaving scripts on the page. To disable this functionality, set the property
    gwt.uncaughtexceptionhandler.windowonerror to IGNORE:

    <set-property name="gwt.uncaughtexceptionhandler.windowonerror" value="IGNORE"/>

For more details, see com.google.gwt.core.Core.

Bug fixes

  • LookupMethodCreator creates too large method
  • NativeRegExp should use iframe instance, fixing Edge JIT bug
  • JsProperty getter/setter sometimes were reported as incompatible
  • Instantiating native JsTypes from JSNI results in InternalCompilerException
  • Remove the SUBSIZED characteristic from filtered streams
  • Internal compiler exception when using native JsType varargs in a JsMethod
  • Regression in String.toLowerCase and toUpperCase for some locales, specifically
    for Turkish
  • Missing bounds check in String.charAt
  • Fix AIOOBE when compiling method references involving varargs.
  • Apply HtmlUnit workaround ensuring that window.onerror is called correctly

Miscellaneous

  • Migrated lang/jre emulation JSNI to JsInterop to share with J2CL
  • Added ErrorProne to gwt builds
  • Improved compliance with CSP
  • Added emulation for java.io.Externalizable
  • Added emulation for java.lang.reflect.Array
  • JSO.equals/hashcode will delegate to the JS object if it has methods with those
    names
  • Removed outdated or unused parts of project
  • Migrate guava JRE emulation to GWT
  • HtmlUnit tests are now run in batch mode

For more detail, see the issue tracker
Full Changelog: 2.8.1...2.8.2