Blockly v9.0.0 available (2022 Q3 release)

490 views
Skip to first unread message

Christopher Allen

unread,
Oct 4, 2022, 6:23:29 PM10/4/22
to blo...@googlegroups.com
Hello block builders!

The 2022 Q3 release of Blockly, v9.0.0, is out.  In this release:
  • Blockly core is now in TypeScript! If you use TypeScript, you should notice better type declarations for Blockly.
  • Blockly is transpiled to ES2015, no longer ES5. ES2015 is supported by all major browsers.
  • Blockly is no longer guaranteed to be compatible with Internet Explorer, and some IE workarounds have been removed.
  • If you're using modules, the way you import generators has changed. See the generators documentation for more information.
Full release notes are below. As always, we welcome bug reports and pull requests.

Cheers,

Christopher Allen


Q3 2022 Release (v9.0.0)

@maribethb maribethb released this 9 minutes ago

Highlights

  • Blockly core is now in TypeScript! If you use TypeScript, you should notice better type declarations for Blockly. There may still be some rough edges; please tell us about them or submit a fix.
  • Blockly is transpiled to ES2015, no longer ES5. ES2015 is supported by all major browsers.
  • Blockly is no longer guaranteed to be compatible with Internet Explorer, and some IE workarounds have been removed.
  • If you're using modules, the way you import generators has changed. See the generators documentation for more information.

Migration

To help deal with breaking changes from this release:

  1. Run npx @blockly/migrate rename --from <your version> <./path/to/my/files*>
  2. Run npx @blockly/migrate fix-imports --from <your version> <./path/to/my/files*>

These commands will automatically modify your files so that they are compatible with version 9. The first command will automatically rename properties that have been renamed. And the second command will add/fix imports for blocks/generators that have been moved.

Some problems may still exist after running the migration scripts, but the majority of them should be fixed!

What's Changed

 BREAKING CHANGES

Most are removing deprecated, unused, or outdated APIs. Each of the PRs listed below has information about what to do if you are affected by the change.

  • Update deprecations for the new release. (#6470)
  • remove unused functions in style.ts (#6386)
  • Removed backwards compatibility for getDeveloperVars(). (#6385)
  • remove checks for IE and EdgeHTML in core (#6336)
  • allow blocks to receive their own delete events (#6337)
  • build: compile to ES2015 instead of ES5 (#6335)
  • Move backwards-compatibility hacks to main.js (#6260)
  • Remove remaining use of goog.module.declareLegacyNamespace. (#6254)
  • properly add the removal of utils.global to the renamings file. (#6204)
  • fix or silence type errors (#6105)

Deprecating Changes

These are changes which deprecate an API but do not remove it. APIs in this category will be removed at a future time. Each of the following PRs should provide guidance on an alternative.

  • Fix blocks with mutators (#6440)
  • stop using is3dSupported (#6400)
  • remove some IE-specific code in dom and style (#6396)
  • deprecate functions in object.ts (#6387)
  • remove AnyDuringMigration from the block drag surface (#6302)

Features

Bug Fixes

  • add compose and decompose to block (#6102) (619ee66)
  • add timeouts to delay expensive mutation operations (#6149) (91b570a)
  • adding and removing css classes that contained spaces (#6455) (8530e6d)
  • build: Fix sourcemaps (#6352) (e10bf99)
  • build: Have prepare task signal async completion (#6356) (079699b)
  • Check for empty array in thrasos.RenderInfo.addElemSpacing_ (#6211) (16b5ccd)
  • component id should be on the prototype (#6104) (172a8ce)
  • context menu not working (#6399) (79051a6)
  • Deep copy options used by dropdown fields (#6425) (05b221b)
  • deprecate functions in object.ts (#6387) (9775b51)
  • disposing of a workspace that has overwritten shadows (#6424) (f2e408b)
  • dragging fails for collapsed blocks with Icons, which have been … (#6081) (5240301)
  • field defaults not being defined correctly (#6453) (eb1b786)
  • Fix blocks with mutators. (#6440) (ab03c65)
  • Fix compilation errors under Closure's strict mode (#6073) (edc2a5c)
  • fix message loading from script tags (#6060) (44edbb8)
  • fix or silence type errors (#6105) (daf78af)
  • generator type declarations (#6412) (b2fa356)
  • improve types in touch code (#6099) (7c7cfbe)
  • Increases the speed of deleting blocks (#6128) (71e8356)
  • inject function options dictionary has wrong type definition (#6231) (233cce8)
  • JSON deserialization fails (bug #6091) (collapsed procedure call… (#6103) (45c36f8)
  • json hooks for lists blocks not needing extra state (#6177) (8b69b61)
  • json serialize lists_getIndex with json extraState (#6136) (#6170) (0afff23)
  • loading messages from script tags. (#6184) (2a7d6b0)
  • Made workspace non-nullable. (#6300) (83a3e74)
  • make eventUtils throw if event type not registered (#6381) (60bc01a)
  • Make generator types and BlockDefinition less restrictive (#6185) (2ff4f88)
  • Make message files work in unpackaged mode, and rebuild msg files (4b1bb8c)
  • message types being incorrect (#6414) (9c81e75)
  • Modifying size update handling for multiline field in parent block. (#6461) (2a2cbb4)
  • Move backwards-compatibility hacks to main.js (#6260) (aaafbc2)
  • mutators disconnecting from children instead of moving them (#6047) (493444c)
  • options parser should add trailing slash to 'media' if not present. (#6263) (#6264) (bf1a40c)
  • packaging .d.ts files (#6327) (c8dd01a)
  • path object not checking theme props (#6451) (893787b)
  • provide initial values to reduce functions in generated js (#6178) (706c2bf)
  • remove calls to removeClass and hasClass (#6413) (5f11f34)
  • remove checks for IE and EdgeHTML in core (#6336) (ffe6d55)
  • Remove float() coercion in Python loops (#6259) (5612e13)
  • remove some IE-specific code in dom and style (#6396) (a785ab8)
  • remove unused functions in style.ts (#6386) (856e74d)
  • remove unused or obsolete useragent checks (#6355) (aff21b9)
  • remove vestigial dependency (#6219) (334956b)
  • replace object.mixin with Object.assign (#6138) (df41c23)
  • reuse the 'bumpObjects' module in inject.js (#6121) (df8349c)
  • Silence Closure errors when modifying tooltips. (#6098) (29b6b87)
  • some AnyDuringMigration (#6430) (c2cbed1)
  • stop using is3dSupported (#6400) (55ea12b)
  • tests: Fix race condition causing flakiness in PHP generator test (#6213) (d7ab815)
  • tests: revert change in marker_svg to keep keyboard nav tests working (#6457) (dd0d0f6)
  • theme types (#6423) (abad51f)
  • Theme.name does not match registered name (#6186) (#6226) (9797943)
  • TS errors on dependent projects with certain tsconfig settings (#6360) (#6361) (e58cf77)
  • type error in uneditable bubbles (#6092) (7353c61)
  • Update deprecations for the new release. (#6470) (d3447ea)
  • update extraState property in serializer typedefs (#6057) (55cae6e)
  • update prettify url (#6459) (852e48a)
  • Update readme and remove travis build badge (e65835c)
  • Update typescript definition files for core, blocks, and generators (#6174) (87aa4c0)

Miscellaneous Chores

  • build: compile to ES2015 instead of ES5 (#6335) (f032151)
  • properly add the removal of utils.global to the renamings file. (#6204) (2f734f7)

Code Refactoring

  • Remove remaining use of goog.module.declareLegacyNamespace. (#6254) (f947b3f)
  • Removed backwards compatibility for getDeveloperVars(). (#6385) (3bc42c5)

New Contributors

Full Changelogblockly-v8.0.5...blockly-v9.0.0

Beka Westberg

unread,
Oct 5, 2022, 2:08:11 PM10/5/22
to Blockly
The AppEngine test site has now been updated to v9.0.0! So if you want to give it a manual test there you can =)

Mark Friedman

unread,
Oct 9, 2022, 7:45:04 PM10/9/22
to blo...@googlegroups.com
Hello block and field creators!

One thing that may not be obvious to folks who have created custom blocks and fields is that the mechanism for sub-classing existing Blockly classes has changed in v9.0.0 and the existing old mechanism will no longer work with v9.  Unless I missed something, you can no longer define your classes as functions and use the Blockly.utils.object.inherits function to make your class a subclass of a Blockly class.  You'll see various errors relating to superclass constructors and calls to superclass methods.  

Basically, you will now need to use the ES6 class ... extends ... syntax to create your class and use the super keyword to call the superclass constructor and methods.  That also means putting any methods that call superclass methods into the class declaration.  

I believe that you can still define other non-static fields and methods on the class's prototype property, but for consistency and clarity you might want to pull all that stuff into the class declaration.

-Mark


--
You received this message because you are subscribed to the Google Groups "Blockly" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blockly+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/blockly/CAN0w5eabOQDcVDiC5_rKw29igPShycFzUQHxU_at4dhsxXgT3g%40mail.gmail.com.

Christopher Allen

unread,
Oct 20, 2022, 7:52:02 AM10/20/22
to blo...@googlegroups.com
Hello block builders!

A patch release for Blockly, v9.0.1, is out.  In this release are bugfixes for some issures reported about v9.0.0—in particular:
  • A fix for an issue with pinch-to-zoom.
  • A fix of the behavour and return type the getSourceBlock method on Fields.
  • A fix for an issue with blocks in mutator flyouts.
Full release notes are below. As always, we welcome bug reports and pull requests.

Cheers,

Christopher Allen




What's Changed

Bug fixes

Cleanup ♻️

Other Changes

Full Changelogblockly-v9.0.0...blockly-v9.0.1

Reply all
Reply to author
Forward
0 new messages