Rush • A new and improved way of building extensions

Its not public.

2 Likes

:sparkles: Rush v1.2.1


Improvements :triangular_ruler:


  • Prior to this release, the positioning of extension blocks in the block-editor flyout was uncertain. This is now fixed and blocks should now appear in the same order (in their category) in which they are defined in the source file.

  • The install script for Linux and macOS is now compatible with most of the Unix shells (like, zsh, Bash, fish, etc.). Previously, it was only executable by Bash.

  • Migrated extensions will now be stored in a directory named {old_name}-rush to prevent the clashing of old extension files with the new ones.

Bug fixes :beetle:


  • Fixed the issue where running the upgrade command would result in a crash. [ref]

  • Fixed the issue where desugaring would fail if the project path contained spaces. [ref]

  • Fixed the issue where the extension's icon won't be visible in the component palette if it was a remote URL.

  • Fixed the issue that caused the exec format error: rush error when trying to use Rush on macOS. [ref]

Other changes :bulb:


  • Desugaring of Java 8 lang. features is now disabled by default for new extensions. It can be enabled in the metadata file (rush.yml).

Installation :hammer_and_wrench:


I regret to say this but...you won't be able to use the rush upgrade command to upgrade Rush this time, as well. :pensive:
Like previous releases, you will need to run the install scripts this time also. Hopefully, this won't happen again. :crossed_fingers:

Using PowerShell (Windows only)

iwr https://raw.githubusercontent.com/shreyashsaitwal/rush-cli/main/scripts/install/install.ps1 -useb | iex

Using Shell

curl https://raw.githubusercontent.com/shreyashsaitwal/rush-cli/main/scripts/install/install.sh -fsSL | sh

Cheers,
Shreyash

4 Likes

My powershell is damaged so can you tell me how I update this

1 Like

If you have Git Bash installed, you can use it to upgrade to v1.2.1

2 Likes

Ok thank you

1 Like

Hello, I got a problem, maybe a bug.
When I use @SimpleProperty annotation and try to build I get this error below.

error

An annotation processor threw an uncaught exception.
│ Consult the following stack trace for details.
│ java.lang.StackOverflowError
│ at java.lang.reflect.Proxy$Key1.(Proxy.java:440)
│ at java.lang.reflect.Proxy$KeyFactory.apply(Proxy.java:545)
│ at java.lang.reflect.Proxy$KeyFactory.apply(Proxy.java:539)
│ at java.lang.reflect.WeakCache.get(WeakCache.java:120)
│ at java.lang.reflect.Proxy.getProxyClass0(Proxy.java:419)
│ at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:719)
│ at sun.reflect.annotation.AnnotationParser$1.run(AnnotationParser.java:305)
│ at sun.reflect.annotation.AnnotationParser$1.run(AnnotationParser.java:303)
│ at java.security.AccessController.doPrivileged(Native Method)
│ at sun.reflect.annotation.AnnotationParser.annotationForMap(AnnotationParser.java:303)
│ at com.sun.tools.javac.model.AnnotationProxyMaker.generateAnnotation(AnnotationProxyMaker.java:87)
│ at com.sun.tools.javac.model.AnnotationProxyMaker.generateAnnotation(AnnotationProxyMaker.java:79)
│ at com.sun.tools.javac.code.AnnoConstruct.getAnnotation(AnnoConstruct.java:179)
│ at io.shreyash.rush.blocks.Property.accessType(Property.java:96)
│ at io.shreyash.rush.blocks.Property.accessType(Property.java:115)
│ at io.shreyash.rush.blocks.Property.accessType(Property.java:115)
│ at io.shreyash.rush.blocks.Property.accessType(Property.java:115)
│ at io.shreyash.rush.blocks.Property.accessType(Property.java:115)
│ at io.shreyash.rush.blocks.Property.accessType(Property.java:115)

2 Likes

Show me how you use that

1 Like

@shreyash I really appreciate your hard work, the part you are putting into the extension development is unforgettable. Thank you for your amazing RUSH :smiley:

2 Likes

@shreyash can i add a separate XML file for network security config in rush?

1 Like

Thanks for reporting. I have identified the issue and a fix will be available in the upcoming release.


Unfortunately, no. AI2 doesn't yet support the use of XML resources in extensions.

4 Likes

:sparkles: Rush v1.2.2


This minor release fixes some crucial bugs and introduces a couple of improvements.

Improvements :triangular_ruler:


  • Development dependencies are now centralized for all Rush projects. This makes Rush more disk efficient by not copying the dev-deps folder for every extension project.

  • Creating a new extension will now fail if a directory with the same name already exists in the current working directory.

Bug fixes :beetle:


  • Fixed the issue that caused Rush to crash because of stack overflow while parsing @SimpleProperty annotations. [ref]

  • Fixed the issue where Rush won't be able to compile too many source files. [ref]

  • Fixed the issue where the compilation would fail if the extension source file didn't define any block annotations.

Internal changes :bulb:


  • Migrated the annotations, processor, and migrator modules in the Rush annotation processor repo to Kotlin.

Installation :hammer_and_wrench:


To upgrade to v1.2.2 from v1.2.1, simply run rush upgrade. If you are on any other version, you will need to reinstall Rush.

To install Rush, follow the installation instructions in the first post:


Cheers,
Shreyash

2 Likes

is kotlin extension support by builder ???

2 Likes

Yes, see here (further up this topic!!):

4 Likes

:sparkles: Rush v1.2.3 [HOTFIX]


A small bug managed to sneak into v1.2.2. This release fixes it. :no_entry_sign:

Bug fixes :beetle:


  • Fixed the issue where IntelliJ IDEA (or any other IDE based on it) would fail to index dev dependencies, resulting in red squigglies everywhere. [ref]

Installation :hammer_and_wrench:


To upgrade to v1.2.3, simply run rush upgrade.

To install Rush, follow the installation instructions in the first post:


Cheers,
Shreyash

3 Likes

image

Error importing aix

1 Like

I was unable to reproduce this. Can you PM me your extension?

1 Like

Oops, I fixed it after rebuilding

1 Like
App Inventor is unable to compile this project.
The compiler error output was
____Preparing application icon
____Creating animation xml
____Creating style xml
____Creating provider_path xml
____Creating network_security_config xml
____Generating adaptive icon file
____Generating round adaptive icon file
____Generating adaptive icon background file
____Generating manifest file
____Attaching native libraries
____Attaching Android Archive (AAR) libraries
____Attaching component assets
____Invoking AAPT
AAPT time: 2.13 seconds
____Compiling source files
(compiling appinventor/ai_anshmishra2166/mm/Screen1.yail to appinventor.ai_anshmishra2166.mm.Screen1)
ERROR: appinventor/ai_anshmishra2166/mm/Screen1.yail line 47: caught exception in inliner for #<procedure gnu.kawa.functions.AppendValues> - java.lang.RuntimeException: no such class: com.kab.myaix.MyAix
gnu.bytecode.ObjectType.getReflectClass([ObjectType.java:179](https://objecttype.java:179/))
gnu.bytecode.ClassType.getModifiers([ClassType.java:103](https://classtype.java:103/))
gnu.bytecode.ClassType.isInterface([ClassType.java:471](https://classtype.java:471/))
gnu.expr.InlineCalls.checkType([InlineCalls.java:56](https://inlinecalls.java:56/))
gnu.expr.InlineCalls.visit([InlineCalls.java:49](https://inlinecalls.java:49/))
gnu.expr.InlineCalls.visitSetExpValue([InlineCalls.java:363](https://inlinecalls.java:363/))
gnu.expr.InlineCalls.visitSetExpValue([InlineCalls.java:28](https://inlinecalls.java:28/))
gnu.expr.ExpVisitor.visitSetExp([ExpVisitor.java:114](https://expvisitor.java:114/))
gnu.expr.InlineCalls.visitSetExp([InlineCalls.java:369](https://inlinecalls.java:369/))
gnu.expr.InlineCalls.visitSetExp([InlineCalls.java:28](https://inlinecalls.java:28/))
gnu.expr.SetExp.visit([SetExp.java:406](https://setexp.java:406/))
gnu.expr.ExpVisitor.visit([ExpVisitor.java:55](https://expvisitor.java:55/))
gnu.expr.InlineCalls.visit([InlineCalls.java:46](https://inlinecalls.java:46/))
gnu.expr.InlineCalls.visitBeginExp([InlineCalls.java:272](https://inlinecalls.java:272/))
gnu.expr.InlineCalls.visitBeginExp([InlineCalls.java:28](https://inlinecalls.java:28/))
gnu.expr.BeginExp.visit([BeginExp.java:156](https://beginexp.java:156/))
gnu.expr.ExpVisitor.visit([ExpVisitor.java:51](https://expvisitor.java:51/))
gnu.expr.InlineCalls.visit([InlineCalls.java:46](https://inlinecalls.java:46/))
gnu.expr.InlineCalls.visit([InlineCalls.java:28](https://inlinecalls.java:28/))
gnu.expr.ExpVisitor.visitAndUpdate([ExpVisitor.java:161](https://expvisitor.java:161/))
gnu.expr.ExpVisitor.visitExps([ExpVisitor.java:175](https://expvisitor.java:175/))
gnu.expr.ApplyExp.visitArgs([ApplyExp.java:415](https://applyexp.java:415/))
gnu.kawa.functions.CompileMisc.validateApplyAppendValues([CompileMisc.java:139](https://compilemisc.java:139/))
sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke([DelegatingMethodAccessorImpl.java:43](https://delegatingmethodaccessorimpl.java:43/))
java.lang.reflect.Method.invoke([Method.java:498](https://method.java:498/))
gnu.expr.InlineCalls.maybeInline([InlineCalls.java:467](https://inlinecalls.java:467/))
gnu.expr.QuoteExp.validateApply([QuoteExp.java:150](https://quoteexp.java:150/))
gnu.expr.InlineCalls.visitApplyExp([InlineCalls.java:119](https://inlinecalls.java:119/))
gnu.expr.InlineCalls.visitApplyExp([InlineCalls.java:28](https://inlinecalls.java:28/))
gnu.expr.ApplyExp.visit([ApplyExp.java:410](https://applyexp.java:410/))
gnu.expr.ExpVisitor.visit([ExpVisitor.java:55](https://expvisitor.java:55/))
gnu.expr.InlineCalls.visit([InlineCalls.java:46](https://inlinecalls.java:46/))
gnu.expr.InlineCalls.visit([InlineCalls.java:28](https://inlinecalls.java:28/))
gnu.expr.LambdaExp.visitChildrenOnly([LambdaExp.java:1664](https://lambdaexp.java:1664/))
gnu.expr.LambdaExp.visitChildren([LambdaExp.java:1651](https://lambdaexp.java:1651/))
gnu.expr.InlineCalls.visitScopeExp([InlineCalls.java:279](https://inlinecalls.java:279/))
gnu.expr.InlineCalls.visitLambdaExp([InlineCalls.java:349](https://inlinecalls.java:349/))
gnu.expr.InlineCalls.visitLambdaExp([InlineCalls.java:28](https://inlinecalls.java:28/))
gnu.expr.ExpVisitor.visitModuleExp([ExpVisitor.java:103](https://expvisitor.java:103/))
gnu.expr.ModuleExp.visit([ModuleExp.java:482](https://moduleexp.java:482/))
gnu.expr.ExpVisitor.visit([ExpVisitor.java:51](https://expvisitor.java:51/))
gnu.expr.InlineCalls.visit([InlineCalls.java:46](https://inlinecalls.java:46/))
gnu.expr.InlineCalls.inlineCalls([InlineCalls.java:33](https://inlinecalls.java:33/))
gnu.expr.Compilation.walkModule([Compilation.java:994](https://compilation.java:994/))
gnu.expr.Compilation.process([Compilation.java:1965](https://compilation.java:1965/))
gnu.expr.ModuleInfo.loadByStages([ModuleInfo.java:330](https://moduleinfo.java:330/))
gnu.expr.ModuleInfo.loadByStages([ModuleInfo.java:315](https://moduleinfo.java:315/))
gnu.expr.ModuleInfo.loadByStages([ModuleInfo.java:315](https://moduleinfo.java:315/))
gnu.expr.ModuleInfo.loadByStages([ModuleInfo.java:315](https://moduleinfo.java:315/))
kawa.repl.compileFiles([repl.java:783](https://repl.java:783/))
kawa.repl.processArgs([repl.java:412](https://repl.java:412/))
kawa.repl.main([repl.java:827](https://repl.java:827/))
Kawa compile time: 3.229 seconds

AndroidRuntime.jar of my aix has no class files, I saw

1 Like

Most likely, it's because of incorrect ProGuard rules. Make sure you have the following two rules in your proguard-rules.pro file:

-keep public class your.extension.package** {
    public *;
 }

-keeppackagenames gnu.kawa**, gnu.expr**
3 Likes

Not able to download rush

1 Like