Giter Club home page Giter Club logo

scalafmt-native's Introduction

scalafmt-native

Build Status Docker Cloud Automated build MicroBadger Size

Statically-linked GraalVM "native image" binaries of scalafmt packaged for Linux, macOS, and Docker. These are totally self-contained, start instantly, and do not require the JVM to run.

๐ŸŽ“ DEPRECATED: This work has now been rolled into the official scalafmt repository!

macOS and Linux

Download the latest version from the releases page.

Docker

Sample usage running on a local src directory:

docker pull mrothy/scalafmt-native
docker run -v $(PWD)/src:/src --rm -it mrothy/scalafmt-native --test /src

scalafmt-native's People

Contributors

mroth avatar mydisconnect avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

scalafmt-native's Issues

native binaries for windows

Graal does not yet support cross-compilation, so we'd need to set up a CI pipeline with each host machine, most likely using MS Azure Pipelines since it's the only one I know that has free support for all OSes.

Docker image issues (java.lang.OutOfMemoryError: Java heap space)

Good day,

I tried to update scalafmt version, but couldn't manage to build the provided image at all. Kept getting the exception:

Caused by: java.lang.OutOfMemoryError: Java heap space: failed reallocation of scalar replaced objects
Error: Image build request failed with exit status 1

Also tried incresing the heap to 10g just for it work, but no luck.
The full stack trace:

Error: Error encountered while parsing scala.meta.internal.prettyprinters.TreeSyntax$SyntaxInstances.$anonfun$syntaxTree$1(scala.meta.internal.prettyprinters.TreeSyntax$SyntaxInstances, scala.meta.Tree)
Parsing context:
	parsing scala.meta.internal.prettyprinters.TreeSyntax$SyntaxInstances$$Lambda$1950/1344541596.apply(Unknown Source)
	parsing scala.meta.prettyprinters.Syntax$$anon$1.apply(Syntax.scala:9)
	parsing scala.meta.prettyprinters.Api$XtensionSyntax.syntax(Api.scala:11)
	parsing org.scalafmt.internal.FormatOps.isMarginizedString(FormatOps.scala:254)
	parsing org.scalafmt.internal.FormatWriter.formatMarginizedString(FormatWriter.scala:102)
	parsing org.scalafmt.internal.FormatWriter.$anonfun$mkString$1(FormatWriter.scala:30)
	parsing org.scalafmt.internal.FormatWriter.$anonfun$mkString$1$adapted(FormatWriter.scala:24)
	parsing org.scalafmt.internal.FormatWriter$$Lambda$828/1380444705.apply(Unknown Source)
	parsing org.scalafmt.internal.FormatWriter.$anonfun$reconstructPath$2(FormatWriter.scala:216)
	parsing org.scalafmt.internal.FormatWriter.$anonfun$reconstructPath$2$adapted(FormatWriter.scala:166)
	parsing org.scalafmt.internal.FormatWriter$$Lambda$831/2069414639.apply(Unknown Source)
	parsing scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:36)
	parsing scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:33)
	parsing scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
	parsing scala.collection.TraversableOnce.addString(TraversableOnce.scala:362)
	parsing scala.collection.TraversableOnce.addString$(TraversableOnce.scala:358)
	parsing scala.collection.AbstractIterator.addString(Iterator.scala:1429)
	parsing scala.collection.TraversableOnce.mkString(TraversableOnce.scala:328)
	parsing scala.collection.TraversableOnce.mkString$(TraversableOnce.scala:327)
	parsing scala.collection.AbstractIterator.mkString(Iterator.scala:1429)
	parsing scala.runtime.ScalaRunTime$._toString(ScalaRunTime.scala:147)
	parsing org.scalafmt.cli.CliOptions.toString(CliOptions.scala:106)
	parsing java.lang.String.valueOf(String.java:2994)
	parsing java.lang.StringBuilder.append(StringBuilder.java:131)
	parsing com.oracle.svm.core.amd64.AMD64CPUFeatureAccess.verifyHostSupportsArchitecture(AMD64CPUFeatureAccess.java:179)
	parsing com.oracle.svm.core.JavaMainWrapper.runCore(JavaMainWrapper.java:129)
	parsing com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:186)
	parsing com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0)

com.oracle.graal.pointsto.util.AnalysisError$ParsingError: Error encountered while parsing scala.meta.internal.prettyprinters.TreeSyntax$SyntaxInstances.$anonfun$syntaxTree$1(scala.meta.internal.prettyprinters.TreeSyntax$SyntaxInstances, scala.meta.Tree)
Parsing context:
	parsing scala.meta.internal.prettyprinters.TreeSyntax$SyntaxInstances$$Lambda$1950/1344541596.apply(Unknown Source)
	parsing scala.meta.prettyprinters.Syntax$$anon$1.apply(Syntax.scala:9)
	parsing scala.meta.prettyprinters.Api$XtensionSyntax.syntax(Api.scala:11)
	parsing org.scalafmt.internal.FormatOps.isMarginizedString(FormatOps.scala:254)
	parsing org.scalafmt.internal.FormatWriter.formatMarginizedString(FormatWriter.scala:102)
	parsing org.scalafmt.internal.FormatWriter.$anonfun$mkString$1(FormatWriter.scala:30)
	parsing org.scalafmt.internal.FormatWriter.$anonfun$mkString$1$adapted(FormatWriter.scala:24)
	parsing org.scalafmt.internal.FormatWriter$$Lambda$828/1380444705.apply(Unknown Source)
	parsing org.scalafmt.internal.FormatWriter.$anonfun$reconstructPath$2(FormatWriter.scala:216)
	parsing org.scalafmt.internal.FormatWriter.$anonfun$reconstructPath$2$adapted(FormatWriter.scala:166)
	parsing org.scalafmt.internal.FormatWriter$$Lambda$831/2069414639.apply(Unknown Source)
	parsing scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:36)
	parsing scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:33)
	parsing scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
	parsing scala.collection.TraversableOnce.addString(TraversableOnce.scala:362)
	parsing scala.collection.TraversableOnce.addString$(TraversableOnce.scala:358)
	parsing scala.collection.AbstractIterator.addString(Iterator.scala:1429)
	parsing scala.collection.TraversableOnce.mkString(TraversableOnce.scala:328)
	parsing scala.collection.TraversableOnce.mkString$(TraversableOnce.scala:327)
	parsing scala.collection.AbstractIterator.mkString(Iterator.scala:1429)
	parsing scala.runtime.ScalaRunTime$._toString(ScalaRunTime.scala:147)
	parsing org.scalafmt.cli.CliOptions.toString(CliOptions.scala:106)
	parsing java.lang.String.valueOf(String.java:2994)
	parsing java.lang.StringBuilder.append(StringBuilder.java:131)
	parsing com.oracle.svm.core.amd64.AMD64CPUFeatureAccess.verifyHostSupportsArchitecture(AMD64CPUFeatureAccess.java:179)
	parsing com.oracle.svm.core.JavaMainWrapper.runCore(JavaMainWrapper.java:129)
	parsing com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:186)
	parsing com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0)

	at com.oracle.graal.pointsto.util.AnalysisError.parsingError(AnalysisError.java:138)
	at com.oracle.graal.pointsto.flow.MethodTypeFlow.doParse(MethodTypeFlow.java:327)
	at com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureParsed(MethodTypeFlow.java:300)
	at com.oracle.graal.pointsto.flow.MethodTypeFlow.addContext(MethodTypeFlow.java:107)
	at com.oracle.graal.pointsto.flow.StaticInvokeTypeFlow.update(InvokeTypeFlow.java:346)
	at com.oracle.graal.pointsto.BigBang$2.run(BigBang.java:510)
	at com.oracle.graal.pointsto.util.CompletionExecutor.lambda$execute$0(CompletionExecutor.java:171)
	at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: java.lang.OutOfMemoryError: Java heap space: failed reallocation of scalar replaced objects
Error: Image build request failed with exit status 1

consider moving away from dockerhub automated builds

For the docker image output:

These are incredibly slow currently (~30 minutes even without queuing, sometimes over an hour when queued), whereas a build and push could happen in 3-4 minutes in most CI environments.

The disadvantage is it loses the integrated Dockerfile display in DockerHub showing verified builds, which is kinda nice.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.