2020-08-24
/ sbt
sbt-projectmatrix 㯠sbt ã®ã¯ãã¹ãã«ããæ¹åããããã«ãåãå®éšãšããŠäœã£ãŠãããã©ã°ã€ã³ã§ãæ¬çš¿ã¯ç¬¬1å ã第2å ã第3å ã«ç¶ã第4匟ã ã0.6.0 ããªãªãŒã¹ããã®ã§ããã§ç޹ä»ããã
ãããã: è€æ°ã® Scala ããŒãžã§ã³ã«å¯Ÿãããã«ã
sbt-projectmatrix ããã«ãã«è¿œå åŸã以äžã®ããã«ã㊠2ã€ã® Scala ããŒãžã§ã³ã䜿ã£ããããªãã¯ã¹ãã»ããã¢ããããã
ThisBuild / organization : = "com.example"
ThisBuild / scalaVersion : = "2.12.10"
ThisBuild / version : = "0.1.0-SNAPSHOT"
lazy val core = ( projectMatrix in file( "core" ))
. settings(
name : = "core"
)
. jvmPlatform( scalaVersions = Seq ( "2.12.12" , "2.13.3" ))
ããã¯ããããã® scalaVersion ã«ãµããããžã§ã¯ããäœãã ++ ã¹ã¿ã€ã«ã®ã¹ããŒããã«ãªã¯ãã¹ãã«ããšéã£ãŠãããã¯äžŠåã«ãã«ããããããã¯å€ãã£ãŠããªãã
ååã§ã¯ % ã䜿ã£ãŠäŸåæ§ãã¹ã³ãŒãä»ãã§ããããšã玹ä»ããã
0.6.0 ã§ã®æ°æ©èœ: ããã·ã³ãã«ãªãããžã§ã¯ãID
JVM2_13 ãšãããµãã£ãã¯ã¹ã远å ãã代ããã«ãsbt-projectmatrix 0.6.0 ãã JVM 軞㚠2_13 軞ã¯ããã©ã«ããšããŠãcoreJVM2_13 ã§ãªã¯ãæ®éã« core ãšã util ãšããååã®ãµããããžã§ã¯ããçæããããšã«ããã
0.6.0 ã§ã®æ°æ©èœ: 2.13-3.0 ãµã³ãã€ããã®ãµããŒã
Scala 3.0 ã¯çµã¿èŸŒã¿ã§ Scala 2.13.x ã«å¯Ÿããã€ã³ã¿ãŒãªãã©ããªãã£ãæã¡ã2.13.x ãã©ã³ãã§ãæè¿ã«ãªã£ãŠ TASTy reader ãšãã Scala 3.0 ã€ã³ã¿ãŒãªãã©ããªãã£æ©èœã远å ãããã詳现ã¯çããšããŠããããçšã㊠1ã€ã®ãµããããžã§ã¯ã㯠Dotty å¥ã®ãµããããžã§ã¯ã㯠2.13 ã䜿ããšãã£ãããšãå¯èœãšãªãã
2020-08-17
æ¬æ¥ä»ãã§ Twitter ã® Build Team ã«å
¥ç€ŸããŸãããäžçäžã«ãã Twitter 瀟ã®ããããããŒããµããŒãããæ¬¡äžä»£ãã«ãã»ã·ã¹ãã ã®æ§ç¯ã«é¢ããããšã«ãªããŸãã
ãã®ããŒã ã¯ã¢ããªãã»ãã«ãããŒã«ã§ãã Pants ã®éçºã«é¢ãã£ãŠããŠã瀟å
ã®ã·ã¹ãã ã Bazel ãžç§»è¡ãããã®ãåœé¢ã®è²¬åãšãªããšæããŸããããããããŒã»ãšã¯ã¹ããªãšã³ã¹ãéçºå¹çãšããããšã«é¢ããŠç±ãæããæã£ãŠããããŒã ãšäžç·ã«åãããšãããåãé¡ã£ãŠããä»äºãªã®ã§ãããŒã ã®äººãã¡ãæ°ãã課é¡ãšã®åºäŒããæ¥œãã¿ã«ããŠããŸãã
ãŸãããã®å ŽãåããŠéæž¡æã« DM ãªã©ã§ã倧äžå€«ã«ããŠãããšãã瀟å
ã§åã®ããšãæšèŠããŠããããããããžã§ã¯ãã®ãªãã¡ãŒãªã©è²ã
声ããããŠãããçããã«æè¬ãããã§ãããããªå£°ããã£ãã®ã§å
æ°ã«ãã£ãŠãããŸãããããããšãããããŸãã4æ ã«çŸ©åãµããã£ã«ã«ãå§ãŸã£ãŠããããããŸã§æéãç¡ããŠã§ããªãã£ããã«ããã£ãã·ã¥ ãšã Selective functor ã¿ãããªäœæ¥ãããããScala Center ã®çŽ æŽãããæ¹ã
ãšã³ã©ãããããšãã§ããã®ã§ãããããæå³ã§ã¯è²ã
è¯ãã£ããªãšæããŸãã
EE Build team ã¯ãSan Francisco, Remote USããšãããã±ãŒã·ã§ã³ãããŸã åéäž ã¿ãããªã®ã§ãèå³ã®ãã人ã¯å¿åããŠäžç·ã«äœæ¥ããŸãããã
2020-08-08
/ sbt
æ¬çš¿ã§ã¯ Ãlafur ããã® olafurpg/sbt-ci-release ã䜿ã£ãŠ sbt ãã©ã°ã€ã³ã®ãªãªãŒã¹ãèªååããŠã¿ããsbt-ci-release ã® README 㯠Sonatype OSS åãã®æ®éã®ã©ã€ãã©ãªã®ãªãªãŒã¹ãåæã«æžãããŠãããsbt ãã©ã°ã€ã³ã®ãªãªãŒã¹ã«å¿
èŠãªå·®å以å€ã®è©³çŽ°ã¯ README ãåç
§ããŠã»ããã
ãªãªãŒã¹ãèªååããããšãã®ãã®ããã¹ãã»ãã©ã¯ãã£ã¹ã ããsbt ãã©ã°ã€ã³ã®ãªãªãŒã¹ã«é¢é£ããŠç¹ã«å¬ããããšãããããã®æ¹æ³ã䜿ãããšã§ Bintray ã® sbt organization ã«ãŠãŒã¶ãŒã远å ããã«ãè€æ°äººã§ sbt ãã©ã°ã€ã³ã®ãªãªãŒã¹æš©éãå
±æããããšãå¯èœãšãªããããã¯ä»äºã§ã¡ã³ãããŠãããã©ã°ã€ã³ããããšãã«äŸ¿å©ã ã
step 1: sbt-ci-release
sbt-release ã䜿ã£ãŠããå Žåã¯åé€ãããsbt-ci-release ã远å ããã
addSbtPlugin( "org.foundweekends" %% "sbt-bintray" % "0.5.6" )
addSbtPlugin( "com.geirsson" % "sbt-ci-release" % "1.5.3" )
version.sbt ãåé€ããã
step 2: -SNAPSHOT version
sbt-dynver ãå€å°æããŠãã¿ã°ã®ä»ããŠããªãã³ãããã§ -SNAPSHOT ããŒãžã§ã³ã䜿ããããã«ãã:
ThisBuild / dynverSonatypeSnapshots : = true
ThisBuild / version : = {
val orig = ( ThisBuild / version). value
if ( orig. endsWith( "-SNAPSHOT" )) "2.2.0-SNAPSHOT"
else orig
}
step 3: sbt-bintray ã»ããã£ã³ã°ã埩掻ããã
ãã©ã°ã€ã³ã¯éåžž sbt-bintray ã䜿ã£ãŠãªãªãŒã¹ããã®ã§ãpublishTo ã bintray / publishTo ã«æ»ããpublishMavenStyle ã false ã«ããã
publishMavenStyle : = false ,
bintrayOrganization : = Some ( "sbt" ),
bintrayRepository : = "sbt-plugin-releases" ,
publishTo : = ( bintray / publishTo). value,
step 4: bintrayReleaseOnPublish ãªãŒããŒã©ã€ãã®åé€
publish ãèªåçã«ãªãªãŒã¹ããããã«ããŠã»ããã®ã§ãçŸåš bintrayReleaseOnPublish := false ãèšå®ããŠããå Žåã¯ãããåé€ããã
2020-07-09
2020-05-31
sbt 1.3.12 ããããªãªãŒã¹ãã¢ããŠã³ã¹ããããªãªãŒã¹ããŒãã®å®å
šçã¯ããã«ãã - https://github.com/sbt/sbt/releases/tag/v1.3.12 ã
ç¹ã« Scala Center ã«ã瀌ãèšãããããã°å ±åãpull request ã¬ãã¥ãŒãã³ã³ããªãã¥ãŒã·ã§ã³ãã¡ãããšæ£ããæã«è¡ãããªã©ã¡ã³ã掻åãè¡ãã«ã¯ããçšåºŠæéãããããã5æäžã® sbt ã®ã¡ã³ã掻å㯠Scala Center ãã¹ãã³ãµãŒããŠããããDaryja ããå§ã Scala Center ã®ã¡ã³ããŒã¯çæ°è»œã«å
±åäœæ¥ãããã人ãã¡ã ã
sbt 1.3.11 ããã®å€æŽç¹
sbt 1.3.11 ã§ launcher çµ±ååšãã«ãªã°ã¬ãã·ã§ã³ããããrepositories ãã¡ã€ã«ãç¡èŠããããšãã圢ã®ãã°ãåºããsbt 1.3.12 ã¯ãããä¿®æ£ããã #5583
ã¢ããã°ã¬ãŒãæ¹æ³
é垞㯠project/build.properties ã
sbt.version=1.3.12
ãšæžãæããã ãã§ ok ã ããããããªãªãŒã¹ã«ã¹ã¯ãªããã®ä¿®æ£ãå«ãŸããŠããå ŽåãããããŸãå
šãŠã® JAR ãã¡ã€ã«ãäºãå
¥ã£ã *.(zip|tgz|msi) ã䜿ã£ãã»ããååã®äŸåæ§è§£æ±ºãéããªãããã€ã³ã¹ããŒã©ãŒã䜿ã£ãã€ã³ã¹ããŒã«ãæšå¥šãããã€ã³ã¹ããŒã©ãŒã¯ SDKMAN ãªã©ã«å
¬éãããã
sdk upgrade sbt
Homebrew ã«é¢ããæ³šæ
Homebrew ã®ã¡ã³ããã¯ãã£ãš brew äŸåæ§ã䜿ããããšããçç±ã§ JDK 13 ãžã®äŸåæ§ã远å ãã brew#50649 ããã®ãããPATH ãéã£ãŠãã java ã JDK 8 ã 11 ã§ãã£ãŠã sbt ã JDK 13 ã§å®è¡ãããããã«ãªã£ãŠããŸãã
sbt ã JDK 13 ã§å®è¡ããã®ãåé¿ããã«ã¯ jEnv ãã€ã³ã¹ããŒã«ããããSDKMAN ã«ä¹ãæããå¿
èŠãããã
2020-05-29
/ sbt
sbt 1.3.11 ããããªãªãŒã¹ãã¢ããŠã³ã¹ããããªãªãŒã¹ããŒãã®å®å
šçã¯ããã«ãã - https://github.com/sbt/sbt/releases/tag/v1.3.11 ã
ç¹ã« Scala Center ã«ã瀌ãèšãããããã°å ±åãpull request ã¬ãã¥ãŒãã³ã³ããªãã¥ãŒã·ã§ã³ãã¡ãããšæ£ããæã«è¡ãããªã©ã¡ã³ã掻åãè¡ãã«ã¯ããçšåºŠæéãããããã5æäžã® sbt ã®ã¡ã³ã掻å㯠Scala Center ãã¹ãã³ãµãŒããŠããããDaryja ããå§ã Scala Center ã®ã¡ã³ããŒã¯çæ°è»œã«å
±åäœæ¥ãããã人ãã¡ã ã
ã¢ããã°ã¬ãŒãæ¹æ³
é垞㯠project/build.properties ã
sbt.version=1.3.11
ãšæžãæããã ãã§ ok ã ããããããªãªãŒã¹ã«ã¹ã¯ãªããã®ä¿®æ£ãå«ãŸããŠããå ŽåãããããŸãå
šãŠã® JAR ãã¡ã€ã«ãäºãå
¥ã£ã *.(zip|tgz|msi) ã䜿ã£ãã»ããååã®äŸåæ§è§£æ±ºãéããªãããã€ã³ã¹ããŒã©ãŒã䜿ã£ãã€ã³ã¹ããŒã«ãæšå¥šãããã€ã³ã¹ããŒã©ãŒã¯ SDKMAN ãªã©ã«å
¬éãããã
sdk upgrade sbt
Homebrew ã«é¢ããæ³šæ
Homebrew ã®ã¡ã³ããã¯ãã£ãš brew äŸåæ§ã䜿ããããšããçç±ã§ JDK 13 ãžã®äŸåæ§ã远å ãã brew#50649 ããã®ãããPATH ãéã£ãŠãã java ã JDK 8 ã 11 ã§ãã£ãŠã sbt ã JDK 13 ã§å®è¡ãããããã«ãªã£ãŠããŸãã
sbt ã JDK 13 ã§å®è¡ããã®ãåé¿ããã«ã¯ jEnv ãã€ã³ã¹ããŒã«ããããSDKMAN ã«ä¹ãæããå¿
èŠãããã
äž»ãªå€æŽç¹
sbt 1.3.11 㯠lm-coursier ã 2.0.0-RC6-4 ãžãšã¢ããã°ã¬ãŒãããããã¯ãã£ãã·ã¥ã®å ŽæãšããŠã® $HOME/.coursier/cache ãã£ã¬ã¯ããªã廿¢ããŠãOS ã«ç¹å®ã®ãã£ã¬ã¯ããªã䜿ãããã«ãªã:
2020-05-24
/ scala
Jar Jar Abrams ã¯ãJava ã©ã€ãã©ãªãã·ã§ãŒãã£ã³ã°ãããŠãŒãã£ãªãã£ã§ãã Jar Jar Links ã®å®éšç Scala æ¡åŒµã ã
ã©ã€ãã©ãªäœè
ã«ãšã£ãŠä»ã®ã©ã€ãã©ãªã¯è«žåã®å£ã ãä»ã®ã©ã€ãã©ãªã䜿ãããšã¯äœæ¥ã®äºéåãé¿ããä»ã®ã©ã€ãã©ãªã䜿ããããªããšããã®ã¯ããã«ã¹ã¿ã³ããŒããšèšãããããªãããããããã®äžæ¹ã§ãã©ã€ãã©ãªã远å ãã床ã«ããã¯ãŠãŒã¶åŽã«ãããšéæ¥çäŸåæ§ã远å ãããããšã«ãªããè¡çªãèµ·ããå¯èœæ§ãäžããããšã«ãªããããã¯åäžã®ããã°ã©ã å
ã«ãã㊠1ã€ã®ããŒãžã§ã³ã®ã©ã€ãã©ãªããæãŠãªãããšã«ãããã
ãã®ãããªè¡çªã¯ããã°ã©ã ãã©ã³ã¿ã€ã ããã¬ãŒã ã¯ãŒã¯äžã§å®è¡ãããå Žåã«ããèµ·ãããsbt ãã©ã°ã€ã³ããã®äŸã ãSpark ãããã1ã€ã®ç·©åçãšããŠéæ¥çã©ã€ãã©ãªãèªåã®ããã±ãŒãžã®äžã«ã·ã§ãŒãã£ã³ã°ãããšããæ¹æ³ãããã2004幎㫠herbyderby (Chris Nokleberg) ãã㯠Jar Jar Links ãšããã©ã€ãã©ãªãåããã±ãŒãžåããããŒã«ãäœã£ãã
2015幎㫠Wu Xiang ããã Jar Jar Links ã䜿ã£ãã·ã§ãŒãã£ã³ã°ã®ãµããŒãã sbt-assembly ã«è¿œå ãããããã¯ååããªäžæ©ã ã£ããã課é¡ãæ®ã£ãŠãããåé¡ã® 1ã€ã¯ Scala ã³ã³ãã€ã©ã¯ ScalaSignature æ
å ±ã *.class ãã¡ã€ã«ã«åã蟌ãããJar Jar ããã®ããšãç¥ããªãããšã ã2020幎ã«ãªã£ãŠ Simacan 瀟㮠Jeroen ter Voorde ããã ScalaSignature ã®å€æã sbt-assembly#393 ã«ãŠå®è£
ãããsbt 以å€ã§ãããã¯åœ¹ã«ç«ã€ãããããªãã®ã§ãç¬ç«ããã©ã€ãã©ãªã«æãåºãããããã Jar Jar Abrams ã ã
core API
ã³ã¢ã«ã¯ shadeDirectory 颿°ãå®è£
ãã Shader ãªããžã§ã¯ããããã
package com.eed3si9n.jarjarabrams
object Shader {
def shadeDirectory(
rules: Seq [ ShadeRule ],
dir: Path ,
mappings: Seq [( Path , String )],
verbose: Boolean
) : Unit = ...
}
ãã®é¢æ°ã¯ãdir ã JAR ãã¡ã€ã«ãå±éãããã£ã¬ã¯ããªã§ããããšãæåŸ
ããã
2020-05-16
/ sbt
sbt ã³ã¢ã»ã³ã³ã»ãã ã®ããŒã¯ããããšãå㯠sbt ãã«ãžã¥ã¢ã«ã«é¢æ°åãªãã«ãã»ããŒã«ãšèšã£ãŠããã颿°åããã°ã©ãã³ã°ã® 2ã€ã®ç¹åŸŽãšããŠããŒã¿ãå€åãããã®ã§ã¯ãªã immutable (äžå€)ãªããŒã¿æ§é ã䜿ãããšãšããã€ãã©ã®ããã«ã㊠effect (äœçš) ãåãæ±ããã«æ°ã䜿ã£ãŠããããšãæããããã
ã»ããã£ã³ã°ãšã¿ã¹ã¯
ãã®èгç¹ããèŠããšãã»ããã£ã³ã°åŒãšã¿ã¹ã¯ã¯ãã® 2ç¹ã«åèŽããŠãããšèããããšãã§ãã:
ã»ããã£ã³ã°åã¯ãã«ãã®äžå€ã°ã©ãã圢æããã
ã¿ã¹ã¯ã¯äœçšã衚ãã
å¿åã»ããã£ã³ã°ã¯ Initialize[A] ã§è¡šããã以äžã®ããã«ãªã£ãŠãã:
sealed trait Initialize [ A ] {
def dependencies: Seq [ ScopedKey [ _ ]]
def evaluate( build: BuildStructure ) : A // approx
....
}
ååã®ä»ããã»ããã£ã³ã°ã¯ Setting ã¯ã©ã¹ã§è¡šããã:
sealed class Setting [ A ] private [ Init ] (
val key: ScopedKey [ A ],
val init: Initialize [ A ],
val pos: SourcePosition
) ....
sbt.Task ã¯å¯äœçšé¢æ° () => A ã®ã©ãããŒã ãšäŸ¿å®çã«èããŠããããã ããåãã¡ããcompile ã¯ã¿ã¹ã¯ã ããšèšããšããã®æèã§ã®ã¿ã¹ã¯ã¯ Initialize[Task[A]] ã§è¡šããããã€ãŸãããã㯠Task[A] åãè¿ãã»ããã£ã³ã°ã ã
ãã㯠Def.task ã®æ»ãå Def.Initialize[Task[A]] ãèŠãããšã§ç¢ºèªããããšãã§ããã
Applicative åæ
Def.task ã¯ã¿ã¹ã¯ (Def.Initialize[Task[A]]) ã® Applicative åæããšã³ã³ãŒãããããã®ãã¯ãã ã以äžã® task1ãtask2ãtask3 ãèå¯ãã:
lazy val task1 = taskKey[ Int ]( "" )
lazy val task2 = taskKey[ Int ]( "" )
lazy val task3 = taskKey[ Int ]( "" )
task1 : = 1
task2 : = 2
task3 : = {
val t1 = task1. value
val t2 = task2. value
t1 + t2
}
ãããæ§ã¿ãã«æ§æã§æžãäžããšãããªã:
2020-05-12
/ sbt
build.sbt ã¯ãèªåçãªäžŠååŠçãè¡ãã¿ã¹ã¯ã»ã°ã©ããå®çŸ©ããããã® DSL ã ãã¿ã¹ã¯å士ã®ã¡ãã»ãŒãžã»ããã·ã³ã°ã¯ something.value ãã¯ãã§è¡šããããã㯠Applicative åæ (task1, task2) mapN { case (t1, t2) => .... } ããšã³ã³ãŒãããã
é·ãèµ°ã£ãŠãã task1 ããããšããéäžã§ task2 ãšéä¿¡ã§ããä»çµã¿ãããã°ãããšæã£ãŠããã
é垞㯠task1 ããµãã¿ã¹ã¯ã«åããããšã§ããã解決ããããããããããå®è£
ããã®ã¯äžççžã§ã¯ãããªãããšããããäŸãã°ãZinc ã«ååã ãã³ã³ãã€ã«ããŠãæ®ãã¯åŸã§ç¶ããŠäžãã? ããã㯠Coursier ã«è§£æ±ºã ãè¡ã£ãŠå®éã®ããŠã³ããŒãã¯åŸã§ãšã©ãèšãã°ããã ããã?
ãããå°ãšã㊠task1 ãäœããã® JSON ãã¡ã€ã«ãçæããŠãtask2 ã¯ãã¡ã€ã«ãçŸãããŸã§åŸ
ã£ãŠããããèªã¿èŸŒããšããããæ¹ãèãããããJSON ãã¡ã€ã«ã®ä»£ããã« Promise[A] ã®ãããªäžŠè¡ããŒã¿æ§é ã䜿ã£ãŠæ¹åããããšãã§ãããããããåŸ
æ©ãšããåä»ãªãã®ãæ®ã£ãŠãããsbt ã¯äžŠåã«å®è¡ããã¿ã¹ã¯ã®æ°ãéã£ãŠããã®ã§ãåŸ
æ©ã®ããã«æ ã䜿ãã®ã¯ãã£ãããªããDaniel ããã® Thread Pools ã«ãã®èŸºãã®äºãè¯ããŸãšãŸã£ãŠãããä»åããã®ã¯å·®ãåœããäœæ¥ãäžåè¡ããªãããããã³ã° IO ããŒãªã³ã°ãšèããããšãã§ãããšæãã
Def.promise
scala.concurrent.Promise ã®ã©ãããŒãå®è£
ã㊠Def.promise ãšåŒãã ãå
·äœäŸã§èª¬æãã:
val midpoint = taskKey[ PromiseWrap [ Int ]]( "" )
val longRunning = taskKey[ Unit ]( "" )
val task2 = taskKey[ Unit ]( "don't call this from shell" )
val joinTwo = taskKey[ Unit ]( "" )
// Global / concurrentRestrictions := Seq(Tags.limitAll(1))
lazy val root = ( project in file( "." ))
. settings(
name : = "promise" ,
midpoint : = Def . promise[ Int ],
longRunning : = {
val p = midpoint. value
val st = streams. value
st. log. info( "start" )
Thread . sleep( 1000 )
p. success( 5 )
Thread . sleep( 1000 )
st. log. info( "end" )
},
task2 : = {
val st = streams. value
val x = midpoint. await. value
st. log. info( s"got $x in the middle" )
},
joinTwo : = {
val x = longRunning. value
val y = task2. value
}
)
ãŸããmidpoint ãšãã PromiseWrap[Int] ã®ã¿ã¹ã¯ãäœããã³ãã³ãåŒã³åºãã®åºŠã«ãã¬ãã·ã¥ãª promise ãæ¬²ããã®ã§ã¿ã¹ã¯ã䜿ããæ¬¡ã«ãlongRunning ãšããã¿ã¹ã¯ããã£ãŠãããã¯éäžã§ promise ãè£å®ãããtask2 㯠midpoint.await.value ã«äŸåãããããã¯ãmidpoint ã«æ ŒçŽããã promise ãå®äºãããŸã§ sbt ã®ã¹ã±ãžã¥ãŒã©ãŒã¯ task2 ãéå§ããªãããšãæå³ããã
2020-05-06
/ sbt
Google ã®ãã«ãã€ã³ãã© Blaze (çŸåšã¯ Bazel ãšããŠãªãŒãã³ãœãŒã¹åãããŠãã) ã®ããšãç¥ã£ãŠãã Scala ã®ããŒã«ãã§ã€ã³ã«ã䌌ããããªä»çµã¿ã欲ãããšãã£ãšæãç¶ããŠãããããã¯ç¹ã«ç¬åµçãªçºæ³ãšããèš³ã§ã¯ç¡ããPeter Vlugter ãããš Ben Dougherty ããã® nailgun Zinc ã§ã®æ©èœ (Pants ã§äœ¿ãããŠãã?) ããKrzysztof Romanowski ããã® Hoarder ãªã©å
è¡ç ç©¶ãããããããã¯ãäœæ¥ãã£ã¬ã¯ããªã«åãã㊠Zinc Analsis ãã¡ã€ã«å
ã«æ ŒçŽãããŠãã絶察ãã¹ã倿ãããšããã¢ã€ãã£ã¢ããæãç«ã£ãŠããã
åã®äœæ¥ã®è©³çްã«å
¥ãåã«ãåé¡ã¹ããŒã¹ããã£ãšãã¢ãããã
ãã«ãã®ãã·ã³äŸåæ§
Akka ã® akka-actor/compile ã sbt 1.3.10 ã§ãã«ããããšãã®ããã«ãªã:
cd ~/work/quicktest/
git clone git@github.com:akka/akka.git akka-0
cd akka-0
sbt
akka > akka-actor/compile
[ info] Generating 'Tuples.scala'
[ info] Generating 'Functions.scala'
[ info] Updating
[ info] Resolved dependencies
[ info] Updating
[ info] Formatting 22 Java sources...
[ info] Reformatted 0 Java sources
[ info] Compiling 191 Scala sources and 28 Java sources to /Users/eed3si9n/work/quicktest/akka-0/akka-actor/target/scala-2.12/classes ...
....
[ success] Total time: 39 s, completed May 6, 2020 1:53:36 PM
å¥ã®äººãåãããšãããã®ãåçŸãããã®ã§ããã®ãã£ã¬ã¯ããªããšå¥ã®å Žæã«ã³ããŒãã:
2020-04-14
/ sbt / scala
Zinc 1.4.0-M1 ããªãªãŒã¹ãããããã¯ããŒã¿çã§ãã£ãŠå°æ¥ã® 1.4.x ãšã®äºææ§ã¯ä¿èšŒãããªãããšã«æ³šæããŠã»ããããã ã1.3.x ãšæ¯èŒçè¿ãã³ããããéžãã ã®ã§å®çšæ§ã¯é«ãã¯ãã ã
Zinc 㯠Scala ã®ããã®å·®åã³ã³ãã€ã©ã ãZinc 㯠Scala 2.10 ~ 2.13 ãš Dotty ãã³ã³ãã€ã«ããããšãå¯èœã ãããããŸã§ã®æ Zinc ãã®ãã®ã¯ Scala 2.12 ã§å®è£
ãããŠããããã㯠Scala 2.12 ã§å®è£
ãããŠãã sbt 1.x ãšããŠã¯åé¡ç¡ãããZinc ã 2.13 ã§ãã¯ãã¹ãã«ãããŠæ¬²ãããšããèŠæã¯åãããã£ãã
ã©ããã Gatling 㯠Zinc ãã©ã€ãã©ãªãšããŠäœ¿ã£ãŠããããããGatling ã®ã³ã¢éçºè
ã® Stephane Landelle ããã¯ã¢ããããŒãã«å¿
èŠãªããããéã£ãŠããããæåŸã«åãããå¿
èŠããã£ãäœæ¥ã¯å
¥ãçµãã ãµããããžã§ã¯ããè§£ãã»ãããŠåé
ç·ããããšã ããããã«ã¯åãæšæ¥æžãã sbt-projectmatrix ã䜿ã£ãã
Li Haoyi ããã Mill ã Scala 2.13 ã§æžãã®ã«ãããåŸ
ã£ãŠãããããããæ¥œãã¿äžãã :)
2020-04-13
/ sbt
sbt-projectmatrix 㯠sbt ã®ã¯ãã¹ãã«ããæ¹åããããã«ãåãå®éšãšããŠäœã£ãŠãããã©ã°ã€ã³ã§ãæ¬çš¿ã¯åã
å ãåå ã«ç¶ã第3匟ã ã0.5.0 ããªãªãŒã¹ããã®ã§ããã§ç޹ä»ããã
ãããã: è€æ°ã® Scala ããŒãžã§ã³ã«å¯Ÿãããã«ã
sbt-projectmatrix ããã«ãã«è¿œå åŸã以äžã®ããã«ã㊠2ã€ã® Scala ããŒãžã§ã³ã䜿ã£ããããªãã¯ã¹ãã»ããã¢ããããã
ThisBuild / organization : = "com.example"
ThisBuild / scalaVersion : = "2.12.10"
ThisBuild / version : = "0.1.0-SNAPSHOT"
lazy val core = ( projectMatrix in file( "core" ))
. settings(
name : = "core"
)
. jvmPlatform( scalaVersions = Seq ( "2.12.10" , "2.11.12" ))
ãã㯠coreJVM2_11 ãš coreJVM2_12 ãšãããµããããžã§ã¯ããäœãã ++ ã¹ã¿ã€ã«ã®ã¹ããŒããã«ãªã¯ãã¹ãã«ããšéã£ãŠãããã¯äžŠåã«ãã«ããããããã¯å€ãã£ãŠããªãã
ååã§ã¯åã§è€æ°ã®æ¬¡å
ã衚çŸã§ãã VirtualAxis ã玹ä»ããã
0.5.0 ã§ã®æ°æ©èœ
0.4.0 ã¯çµæ§ããç·ãã£ãŠããããå®éã«äœ¿ã£ãŠã¿ããšäžäŸ¿ãªç¹ããã£ãããŸã㯠% æ§æãç¡ãããšã ã
ãµããããžã§ã¯ãéã§ Test ã³ã³ãã£ã®ã¥ã¬ãŒã·ã§ã³ããã ãäŸåããããCompile å士ãTest å士ã§äŸåãããšããã®ã¯è¯ãããããšã ã0.5.0 㯠% ã远å ããŠãããå¯èœãšããã
lazy val app = ( projectMatrix in file( "app" ))
. dependsOn( core % "compile->compile;test->test" )
. settings(
name : = "app"
)
. jvmPlatform( scalaVersions = Seq ( "2.12.10" ))
lazy val core = ( projectMatrix in file( "core" ))
. settings(
name : = "core"
)
. jvmPlatform( scalaVersions = Seq ( "2.12.10" , "2.13.1" ))
Project ã«ããæ©èœã®äžã€ãšã㊠.configure(...) ã¡ãœãããšãããã®ãããããã㯠Project => Project 颿°ã®å¯å€é·åŒæ°ãåãåããé æ¬¡é©çšããã ãã®ãã®ã ãåãåãæ±ã£ãŠãããã«ãã«ãããããŸã«åºãŠããã®ã§ .configure(...) ããããš Project ãã ProjectMatrix ã«ç§»æ€ãããããªãã
2020-04-08
2014幎3æã« Lightbend瀟 (åœæ Typesafe瀟) ã«å
¥ç€Ÿãããä¿¡ããããªããã㪠6幎ã®åŸã2020幎4æ7æ¥ããã£ãŠéè·ãšãªã£ããLightbendãããŒãããŒå瀟ã顧客ããããŠã«ã³ãã¡ã¬ã³ã¹ãªã©ã§åºäŒã£ãè²ããªäººãšã€ãªãããæã£ããäžç·ã«äœæ¥ããæ©äŒãããããã®ã¯æè¬ããŠãããæ¯ãè¿ããš COVID-19åã®æä»£ã§ãšãŒããããã¢ãžã¢ãåç±³ãªã©ãæ°ã¶æããšã«é£ã³åã£ãŠã«ã³ãã¡ã¬ã³ã¹ã«åºãã瀟å
å宿ãè¡ã£ãŠããã®ãçŸå®é¢ãããŠæããã
以äžã¯éå»6幎ã®ç°¡åãªæ¯ãè¿ãã ã
2014
Scala ãè¶£å³ã§å§ããã®ã¯ 2009幎ã®çµããé ãªã®ã§ã2014å¹Žã®æç¹ã§ã¯ 4幎ãããã¯æžããŠããã®ã§ã¯ãªãããäžåºŠãç¬ç¿ Scalazããçµãã£ãŠãé¢é£ãããã¿ã§æåã® nescala ã®ããŒã¯ãè¡ã£ãã10åãããã® sbt ãã©ã°ã€ã³ãäœã£ãŠãStackoverflow ã§ãè¯ã掻åããŠãã
3æã« Lightbend瀟ã®ããŒãªã³ã°ããŒã (åœæã¯ Typesafe瀟ãQ課ã) ã«å
¥ç€Ÿãããåœæã®ã¡ã³ããŒã¯ Josh Sereth ãš Toni CuneiãJosh ãš sbt ã®ã¡ã³ããããã®ã¯ç¢ºãã«ä»äºã®åæ
ã ãã©ããä»äºã¯æŠç¥ãããã¯ãé£é¢ãšããããåŠã³ã®å€ã顧客ããªãã³ãªãã®ã倧åã ã£ããå
¥ç€ŸããçŽåŸã«é¡§å®¢å
ã«åœå
ç·ã§é£ãã§ãApache Ivy ã®ã³ãŒããèªãã ããããã¡ã€ãªã³ã°ãããããã®ãèŠããŠãããæåã¯é¢é£ãã£ãããããã« sbt ã®äžã§ã¯ã©ã€ãã©ãªäŸåæ§åšããæãæ
£ãããã«ãªã£ãã
2014幎5æã«ã¯ sbt ã®ããŒãžã§ã³çªå·ã 0.13.2 ãã 0.13.5 ãšé£ã°ã㊠sbt 1.x ã·ãªãŒãºã®ãã¯ãããžãŒã¬ãã¥ãŒ ãšãããå¿
èŠãªæ©èœãå®éšçã«å°å
¥ããŠããããšã§ sbt 1.x ãšã®å·®ã倧ãããªãéããªãããã«ãããšããã¢ã€ãã£ã¢ã ã£ãã
sbt 0.13.6 ã«ãªã£ãŠãæªè§£æ±ºã®äŸåæ§ã®ãšã©ãŒãè¶³ããªãäŸåæ§ã®æšã§è¡šç€ºããããeviction warningãupdateOptions ã§ã® withLatestSnapshots ãªã©åã远å ããã©ã€ãã©ãªäŸåæ§åšãã®æ©èœãåºãŠããããã«ãªãã
2014幎åŸåã«ã¯ Q課㯠Typesafe Reactive Platform v1 ã®ããã®ã€ã³ãã©äœããè¡ã£ãããã㯠Toni ãå®è£
ãã Dbuild ãå
ã«ããåçšé
åžããã±ãŒãžã ã
2015
2015幎3æãJosh ãšäžç·ã«åã®æåã® Scala Days ã®ããŒã¯ ‘The road to sbt 1.0 is paved with server’ ãè¡ã£ããåœæã®åããèŠããš Josh ã«ã¯ sbt ã«é¢ããç¡éã®ç¥èŠã«å¯ãã§ããããã«èŠããã
2020-04-05
å
é± ã¯ãScala ã§ãŠãŒã¶ã©ã³ãããèŠåãåºãä»çµã¿ã®ææ¡ã§ãã #8820 ã«ã€ããŠæžãããäŸãšã㊠ApiMayChange ã¢ãããŒã·ã§ã³ãå®è£
ããã
package foo
import scala.annotation.apiStatus, apiStatus. _
@apiStatus (
"should DSL is incubating, and future compatibility is not guaranteed" ,
category = Category . ApiMayChange ,
since = "foo-lib 1.0" ,
defaultAction = Action . Warning ,
)
implicit class ShouldDSL ( s: String ) {
def should( o: String ) : Unit = ()
}
ããã¯å§ããšããŠã¯äžå¿äœ¿ãããã©ããå°ãåé·ã ããããªãããã® API ã¹ããŒã¿ã¹ãé »ç¹ã«äœ¿ãããå Žåãã©ã€ãã©ãªäœè
ãç¬èªã®ã¹ããŒã¿ã¹ã¢ãããŒã·ã§ã³ãå®çŸ©ã§ãããšå¬ãããšæãã仿¥ã¯ãã®æ¹æ³ãèããã
ãã®åã«å°ãè£æ¹ã®è§£èª¬ãå¿
èŠãšãããã³ã³ãã€ã©ãã¢ãããŒã·ã§ã³ãèŠãæãã®æ
å ±ã¯ AnnotationInfo ãšããŠæž¡ãããåŒæ°ã¯æ§ææšã§è¡šããããããã«ãã£ãŠã³ãŒã«ãµã€ãã®ãœãŒã¹ã³ãŒãã¯ããããã¢ãããŒã·ã§ã³ã®ã³ãŒããã³ã³ã¹ãã©ã¯ã¿ã§äœããã£ããªã©ã®äºã¯åãããªããäžæ¹ãã¢ãããŒã·ã§ã³ã¯ã©ã¹ã«ã¿ã°ä»ããããã¢ãããŒã·ã§ã³ã®ããšã¯åããã
ApiMayChange ã®å®è£
åã³
ã¢ãããŒã·ã§ã³ã®ã«ä»ããããšãåæã«äœãããã¢ãããŒã·ã§ã³ã¯ã¡ã¿ã¢ãããŒã·ã§ã³ãšåŒã°ããããã䜿ãããšã§ apiStatus ã®ç¶æ¿ãè¡ãããšãã§ãã:
import scala.annotation.{ apiStatus, apiStatusCategory, apiStatusDefaultAction }
import scala.annotation.meta._
@apiStatusCategory ( "api-may-change" )
@apiStatusDefaultAction ( apiStatus. Action . Warning )
@companionClass @companionMethod
final class apiMayChange (
message: String ,
since: String = "" ,
) extends apiStatus( message, since = since)
category ã defaultAction ã extends apiStatus(....) ã§æž¡ãã®ã§ã¯ãªã @apiStatusCategory ãš @apiStatusDefaultAction ã䜿ã£ãŠæå®ããã
2020-03-29
/ scala
äžã©ã€ãã©ãªäœè
ãšããŠãScala ã§ã¡ãœãããã¿ã°ä»ãããŠã«ã¹ã¿ã ã®ã³ã³ãã€ã©èŠåããšã©ãŒãçºåã§ãããšãããªãšåããæã£ãŠãããäœæ
æå³çã«ã³ã³ãã€ã©ãšã©ãŒãåºãå¿
èŠãããã®ããšæããããããªããäžã€ã®ãŠãŒã¹ã±ãŒã¹ãšããŠã¯ãAPI ã廿¢ããåŸã§ãã€ã°ã¬ãŒã·ã§ã³ã®ããã®ã¡ãã»ãŒãžã衚瀺ãããããšã ã
åã¯ããã Restligeist macroãã€ãŸãå°çžéãã¯ããšåŒãã§ãããäŸãã°ãsbt 1.3.8 ã«ãã㊠<<= ã䜿ããšä»¥äžã®ãšã©ãŒã¡ãã»ãŒãžãèµ·åæã«è¡šç€ºãããã
/ tmp/ hello/ build. sbt: 13 : error: `<<=` operator is removed. Use `key := { x.value }` or `key ~= (old => { newValue })`.
See http://www.scala-sbt.org/ 1 .x/docs/Migrating-from-sbt- 013 x.html
foo <<= test,
^
[ error ] sbt. compiler. EvalException : Type error in expression
[ error ] Use 'last' for the full log.
Project loading failed: ( r ) etry , ( q) uit, ( l) ast, or ( i) gnore?
ããå®çŸå¯èœãšããã®ã¯è¯ãããšã ãã©ãããããããã¯ãã䜿ããªããã°ãããªãã®ããã®ãä»°ã
ãããåç°ãã ã«ãããš Haskell ã ãšãããããã®ããšã¯åã·ã°ããã£ã« Whoops ãšæžãã ãã§ã§ããããã:
-- | This function is being removed and is no longer usable.
-- Use 'Data.IntMap.Strict.insertWith'
insertWith' :: Whoops "Data.IntMap.insertWith' is gone. Use Data.IntMap.Strict.insertWith."
=> (a -> a -> a) -> Key -> a -> IntMap a -> IntMap a
insertWith' _ _ _ _ = undefined
configurable ãªèŠå
2019幎3æã«å㯠scala/scala ã« #7790 ãšãã pull request ãéã£ãŠ @compileTimeError ãšããã¢ãããŒã·ã§ã³ãææ¡ãããã¬ãã¥ãŒã®æµããåãå
¥ããŠãããã¡ pull request 㯠@restricted ã¢ãããŒã·ã§ã³ãš configurable ãªèŠåãªãã·ã§ã³ -Wconf ãšãããã®ã«å€ãã£ãŠãã£ãã@restricted ã¯ã©ãã«ã«ãã£ãŠã¡ãœããã®ã¿ã°ä»ããè¡ãã-Wconf ã¯ãã®ã¿ã°ã -Wconfig apiMayChange:foo.*:error ãšãããµãã«ããŠèŠåããšã©ãŒã«ãšã¹ã«ã¬ãŒããããããšãã§ãããšãããã®ã ã
2019-12-08
/ sbt
giter8.version
Giter8 0.12.0 ã« giter8-launcher ãšããå°ããªã¢ããªã远å ããããã®ã¢ããªã®ç®ç㯠Giter8 ãã³ãã¬ãŒãã®æ¯ãèããäºæž¬å¯èœã«ããããšã«ãããçŸç¶ã ãšããã³ãã¬ãŒãäœè
ã Giter8 ããŒãžã§ã³ X ãæ³å®ããŠãã³ãã¬ãŒããäœã£ããšããŠããŠãŒã¶ãŒåŽã¯ “sbt new” ã«å梱ãããå¥ãª Giter8 ããŒãžã§ã³ Y ã䜿ã£ãŠå®è¡ãããŠããã
sbt ã®è¯ãã¢ã€ãã£ã¢ã®äžã€ã«ãŠãŒã¶ãŒãã©ã®ããŒãžã§ã³ã® sbt ã¹ã¯ãªãããã€ã³ã¹ããŒã«ããŠããŠãã³ã¢ã® sbt ããŒãžã§ã³ã¯ãã«ãäœè
ã project/build.properties ãã¡ã€ã«ã䜿ã£ãŠæå®ã§ãããšãããã®ããããããã«ãã£ãŠãèªåã®ãã·ã³ã§ããåäœããªããåé¡ã倧å¹
ã«æ¹åããããgiter8-launcher 㯠sbt ã«ããã sbt-launcher ã«åæ§ã®ãã®ã ãgiter8-launcher ã¯ãã³ãã¬ãŒãã®ã¯ããŒã³ããŠãproject/build.properties ãã¡ã€ã«ãèªã¿èŸŒãã§ããã³ãã¬ãŒãã®ã¬ã³ããªã³ã°ã«çšããå®éã® Giter8 ããŒãžã§ã³ã決å®ããã
ãã³ãã¬ãŒãäœè
㯠project/build.properties ãã¡ã€ã«ãçšããŠä»¥äžã®ããã« Giter8 ããŒãžã§ã³ãæå®ã§ãã:
giter8.version=0.12.0
2019-11-04
sbt-projectmatrix 㯠sbt ã®ã¯ãã¹ãã«ããæ¹åããããã«ãåãå®éšãšããŠäœã£ãŠãããã©ã°ã€ã³ã§ãæ¬çš¿ã¯åç¯ ã«ç¶ã第2匟ã ã0.4.0 ããªãªãŒã¹ããã®ã§ããã§ç޹ä»ããã
ãããã: è€æ°ã® Scala ããŒãžã§ã³ã«å¯Ÿãããã«ã
sbt-projectmatrix ããã«ãã«è¿œå åŸã以äžã®ããã«ã㊠2ã€ã® Scala ããŒãžã§ã³ã䜿ã£ããããªãã¯ã¹ãã»ããã¢ããããã
ThisBuild / organization : = "com.example"
ThisBuild / scalaVersion : = "2.12.10"
ThisBuild / version : = "0.1.0-SNAPSHOT"
lazy val core = ( projectMatrix in file( "core" ))
. settings(
name : = "core"
)
. jvmPlatform( scalaVersions = Seq ( "2.12.10" , "2.11.12" ))
ãã㯠coreJVM2_11 ãš coreJVM2_12 ãšãããµããããžã§ã¯ããäœãã ++ ã¹ã¿ã€ã«ã®ã¹ããŒããã«ãªã¯ãã¹ãã«ããšéã£ãŠãããã¯äžŠåã«ãã«ããããããã¯å€ãã£ãŠããªãã
åç¯ã§ã¯ãã®èãæ¹ãã¯ãã¹ã»ãã©ãããã©ãŒã ãã¯ãã¹ã»ã©ã€ãã©ãªãžãšå¿çšãããããšãèããã
0.2.0 ã®åé¡
Support for mixed-style matrix dependencies #13 ãš Support for pure Java subprojects #14 ãšãã 2ã€ã® issue ãç«ãŠãããŠã0.2.0 ã®èšèšã«éçãããããšã«æ°ã¥ããã0.2.0 ã¯ååã¯ä»¥äžã®ããã«è¡šçŸããã:
final class ProjectRow (
val idSuffix: String ,
val directorySuffix: String ,
val scalaVersions: Seq [ String ],
val process: Project => Project
) {}
ããã¯ãåã远跡ã§ãããã® (äŸãã°ãã©ãããã©ãŒã ) ã 1ã€ã®æ¬¡å
ãšãã©ã¹ã§ç¹å®ã® Scala ããŒãžã§ã³ã«éå®ãããå ±åããã issue ã¯ãããªãã¯ã¹å
ã®åãå¥ã®ãããªãã¯ã¹å
ã®åãžãšå°ã匱ããå¶éãçšããŠé¢é£ä»ããããšããŠãããšæå³ã§åãåé¡ã®å€çš®ã§ãããšèšããã
2019-09-12
Pamflet ã¯çãææžãç¹ã«ãªãŒãã³ãœãŒã¹ã»ãœãããŠã§ã¢ã® ãŠãŒã¶ã»ããã¥ã¡ã³ããå
¬éããããã®ã¢ããªã ã
Pamflet 0.8.2 ã¯ã¢ãã¹ããŒã¹ã®ã¿ã€ããã§ã€ã¹ã SFMono ãžãšå€æŽããããŸããBlueprint ãã Bootstrap ã«ç§»è¡ãããšãã«äžæã«å°å
¥ããããã³ã¯ã®æåè²ãå
ã«æ»ãã
2019-07-29
/ scala
äŸåæ§ãªãŸã«ããŒ
äŸåæ§ãªãŸã«ã㌠(dependency resolver)ããããã¯ããã±ãŒãžãããŒãžã£ãŒã¯ããŠãŒã¶ãŒã«ãã£ãŠäžããããå¶çŽã®éåãå
ã«ççŸããªãã¢ãžã¥ãŒã«ã®éåãæ±ºå®ããããã°ã©ã ã ãéåžžãã®å¶çŽèŠä»¶ã¯ã¢ãžã¥ãŒã«åãšãããã®ããŒãžã§ã³çªå·ãå«ããJVM ãšã³ã·ã¹ãã ã«ããã Maven ã¢ãžã¥ãŒã«ã¯ organization (group id) ãæå®ã«çšããããããã®ä»ã®å¶çŽãšããŠãããŒãžã§ã³ç¯å²ãé€å€ã¢ãžã¥ãŒã«ãããŒãžã§ã³ãªãŒããŒã©ã€ããªã©ãããã
ããã±ãŒãžã³ã°ã¯å€§ãŸãã« OS ããã±ãŒãž (HomebrewãDebian packages ãªã©)ãç¹å®ã®ããã°ã©ãã³ã°èšèªã®ã¢ãžã¥ãŒã« (CPANãRubyGemãMaven ãªã©)ãç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ã®ããã®ãšã¯ã¹ãã³ã·ã§ã³ (Eclipse ãã©ã°ã€ã³ãIntelliJ ãã©ã°ã€ã³ãVS Code extensions ãªã©) ã® 3ã€ã®ã«ããŽãªãŒãããã
äŸåæ§è§£æ±ºã®ã»ãã³ãã£ã¯ã¹
èãå§ãã®è¿äŒŒãšããŠã¢ãžã¥ãŒã«äŸåæ§ã DAG (æåéå·¡åã°ã©ã) ã ãšèããããšãã§ãããããã¯äŸåæ§ã°ã©ããããã㯠“deps graph” ãšåŒã°ããã以äžã®ãã㪠2ã€ã®ã¢ãžã¥ãŒã«äŸåæ§ããããšãã:
a:1.0ãããã¯ããã« c:1.0 ã«äŸåããã
b:1.0ãããã¯ããã« c:1.0 ãš d:1.0 ã«äŸåããã
+-----+ +-----+
|a:1.0| |b:1.0|
+--+--+ +--+--+
| |
+<-------+
| |
v v
+--+--+ +--+--+
|c:1.0| |d:1.0|
+-----+ +-----+
a:1.0 ãš b:1.0 ã«äŸåãããšãa:1.0ãb:1.0ãc:1.0ããã㊠d:1.0 ãåŸããããããã¯æšãæ©ããŠããã ãã ã
2019-05-17
/ sbt
çããããã«ã¡ã¯ãsbt ãããžã§ã¯ãã代衚ã㊠sbt 1.3.0-RC1 ãã¢ããŠã³ã¹ããŸãããã㯠sbt 1 ã®ãã£ãŒãã£ãŒãªãªãŒã¹ç¬¬3匟ã§ããã€ããªäºææ§ã¯ç¶æãã€ã€æ°æ©èœã«ãã©ãŒã«ã¹ãåœãŠããªãªãŒã¹ãšãªã£ãŠãããsbt 1 㯠Semantic Versioning ã«ããšã¥ããŠãªãªãŒã¹ãããã®ã§ããã©ã°ã€ã³ã¯ sbt 1.x ã·ãªãŒãºäžæ©èœããããšãæåŸ
ãããŠããã
2019幎3æ29æ¥ãŸã§ã«å€§ããªåé¡ãèŠã€ãããªããã°ã1.3.0-RC1 㯠1.3.0 final çãšãªãäºå®ã ã
sbt 1.3 ã®äž»ãªæ°æ©èœã¯ããã©ã«ãã§ã® Coursier ã䜿ã£ãã©ã€ãã©ãªç®¡çãClassLoader ã¬ã€ã€ãªã³ã°ãIO ã®æ¹åããã㊠super shell ã ããããã®æ©èœã®çµã¿åããããã«ãã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžããããšãé¡ã£ãŠããã
äºææ§ã«åœ±é¿ã®ãã倿Žç¹
Coursier ãçšããã©ã€ãã©ãªç®¡çã詳现ã¯åŸã»ã©ã
ClassLoader ã¬ã€ã€ãªã³ã°ã詳现ã¯åŸã»ã©ã
super shellã詳现ã¯åŸã»ã©ã
ãã«ãã³ãã³ãã®å
é ã«ã»ãã³ãã³ãèŠããªããªã£ããclean;Test/compile; ã§åäœããããã«ãªã£ãã #4456 by @eatkins
sbt.internal.inc.ZincUtil 以äžã®é¢æ°ã§ LM ã䜿ããã®ã ZincLmUtil ã«ç§»åããŠãZinc ãã LM ã«äŸåããªãããã«ãªã£ãã zinc#655 by @dwijnand
Coursier ãçšããã©ã€ãã©ãªç®¡ç
sbt 1.3.0 ã¯ã©ã€ãã©ãªç®¡çã« Coursier ãæ¡çšãããCoursier ã¯ãã©ã€ãã©ãªäŸå解決ãè¡ããã®ã§ Ivy ã«äŒŒãŠããããããé«éåãæ±ã㊠Alexandre Archambault ãã (@alexarchambault ) ã«ããäžãã Scala ã§ãªã©ã€ãããããã®ã ã
泚æ : ç¶æ³ã«ãã£ãŠã¯ Coursier ã®è§£æ±ºçµæã¯ Ivy ãšç°ãªãããšããããã (äŸãã°ããªã¢ãŒãã® -SNAPSHOT 㯠24æéãã£ãã·ã¥ããã)ãã©ã€ãã©ãªç®¡çã Apache Ivy ã«æ»ãããå Žåã¯ã以äžã®èšå®ã build.sbt ã«æžãããšãã§ãã:
2019-05-10
/ sbt
å»å¹Ž sbt ã®ã¯ãã¹ãã«ããæ¹åããããã«ãsbt-projectmatrix ãšããå®éšçãã©ã°ã€ã³ãæžããã0.2.0 ããªãªãŒã¹ããã®ã§ããã§ç޹ä»ããã
è€æ°ã® Scala ããŒãžã§ã³ã«å¯Ÿãããã«ã
sbt-projectmatrix ããã«ãã«è¿œå åŸã以äžã®ããã«ã㊠2ã€ã® Scala ããŒãžã§ã³ã䜿ã£ããããªãã¯ã¹ãã»ããã¢ããããã
ThisBuild / organization : = "com.example"
ThisBuild / scalaVersion : = "2.12.8"
ThisBuild / version : = "0.1.0-SNAPSHOT"
lazy val core = ( projectMatrix in file( "core" ))
. settings(
name : = "core"
)
. jvmPlatform( scalaVersions = Seq ( "2.12.8" , "2.11.12" ))
ãã㯠coreJVM2_11 ãš coreJVM2_12 ãšãããµããããžã§ã¯ããäœãã
++ ã¹ã¿ã€ã«ã®ã¹ããŒããã«ãªã¯ãã¹ãã«ããšéã£ãŠãããã¯äžŠåã«ãã«ãããã
2ã€ã®ãããªãã¯ã¹
1ã€ä»¥äžã®ãããªãã¯ã¹ããããšé¢çœããªãã
ThisBuild / organization : = "com.example"
ThisBuild / scalaVersion : = "2.12.8"
ThisBuild / version : = "0.1.0-SNAPSHOT"
// uncomment if you want root
// lazy val root = (project in file("."))
// .aggregate(core.projectRefs ++ app.projectRefs: _*)
// .settings(
// )
lazy val core = ( projectMatrix in file( "core" ))
. settings(
name : = "core"
)
. jvmPlatform( scalaVersions = Seq ( "2.12.8" , "2.11.12" ))
lazy val app = ( projectMatrix in file( "app" ))
. dependsOn( core)
. settings(
name : = "app"
)
. jvmPlatform( scalaVersions = Seq ( "2.12.8" ))
ãã®äŸã§ã¯ core 㯠Scala 2.11 ãš 2.12 ã«å¯ŸããŠãã«ãããããapp ã¯ãã®ãã¡ã® 1ã€ã®ã¿å¯Ÿå¿ããŠããã
2019-04-23
/ git
ãµããã£ã¬ã¯ããªãæ°ãããªããžããªãžåå²ããã (ã·ã³ãã«ãªå Žå)
git clone --no-hardlinks --branch master originalRepoURL childRepo
cd childRepo
git filter-branch --prune-empty --subdirectory-filter path/to/keep master
git remote remove origin
git prune
git gc --aggressive
originalRepoURLãmasterãpath/to/keep ãªã©ã¯é©åœãªå€ã«å€ãããå
šãŠã®ãã©ã³ããåŠçãããå Žå㯠-- --all ã䜿ãã
ãµããã£ã¬ã¯ããªãæ°ãããªããžããªãžåå²ããã (è€éãªå Žå)
è€æ°ã®ãã¹ããã£ã«ã¿ãŒãããå Žåã¯ã--index-filter ãš brew install gnu-sed findutils ã«ãã£ãŠã€ã³ã¹ããŒã«ã§ãã GNU xargs ãš GNU sed ã䜿ãå¿
èŠãããã
git clone --no-hardlinks --branch master originalRepoURL childRepo
cd childRepo
git filter-branch --index-filter 'git rm --cached -qr --ignore-unmatch -- . && git reset -q $GIT_COMMIT -- path1/to/keep path2/to/keep' --prune-empty master
git filter-branch --prune-empty --parent-filter 'gsed "s/-p //g" | gxargs git show-branch --independent | gsed "s/\</-p /g"'
git remote remove origin
git prune
git gc --aggressive
originalRepoURLãmasterãpath1/to/keepãpath2/to/keep ãªã©ã¯é©åœãªå€ã«å€ãããå
šãŠã®ãã©ã³ããåŠçãããå Žå㯠-- --all ã䜿ãã
2019-03-26
/ scala
ãã㯠Travis CI ã«èªåã§ JDK ãã€ã³ã¹ããŒã«ãã解説ã®ç¬¬2匟ã ã以åã¯ãjabba ã玹ä»ããã
仿¥ã¯ SDKMAN! , ãšãããMarco Vermeulen (@marc0der ) ãããäœã£ãå
æ°ãªååã®ããŒã«ãèŠãŠãããããã¯ãJDK ã®ä»ã«ã GroovyãSparkãsbt ãªã© JVM äžã®æ§ã
ãªããŒã«ã察象ãšããç°å¢ãããŒãžã£ãŒã ã
AdoptOpenJDK 11 ãš 8
2020-09-23 æŽæ° : ããŒãžã§ã³çªå·ã®æ£èŠè¡šçŸãæŽæ°ããã
2019-11-06 æŽæ° : SDKMAN ã®æŽæ°ããã³ããã CI ããããã¯ããã®ãåé¿ããããã« sdkman_auto_selfupdate ã远å ããããŸããsdk install ã®è¡ã« || true ã远å ããã
2019-07-08 æŽæ° : ãããããŒãžã§ã³ãèªåæ€ç¥ããããã«å€æŽãããå€ãç 㯠GitHub ã«çœ®ããŠããã
以äžã¯ SDKMAN! ã䜿ã£ãŠ Travis CI äžã§ AdoptOpenJDK 8 ãš 11 ãçšããŠã¯ãã¹ãã«ãããæ¹æ³ã :
dist : xenial
language : scala
scala : 2.12.10
matrix :
include :
- env :
- ADOPTOPENJDK=11
- env :
- ADOPTOPENJDK=8
before_install :
# adding $HOME/.sdkman to cache would create an empty directory, which interferes with the initial installation
- "[[ -d /home/travis/.sdkman/ ]] && [[ -d /home/travis/.sdkman/bin/ ]] || rm -rf /home/travis/.sdkman/"
- curl -sL https://get.sdkman.io | bash
- echo sdkman_auto_answer=true > /home/travis/.sdkman/etc/config
- echo sdkman_auto_selfupdate=true >> $HOME/.sdkman/etc/config
- source "/home/travis/.sdkman/bin/sdkman-init.sh"
install :
- sdk install java $(sdk list java | grep -o "$ADOPTOPENJDK\.[0-9]*\.[0-9]*\.hs-adpt" | head -1) || true
- unset _JAVA_OPTIONS
- unset JAVA_HOME
- java -Xmx32m -version
script : sbt -Dfile.encoding=UTF8 -J-XX:ReservedCodeCacheSize=256M ++$TRAVIS_SCALA_VERSION! test
before_cache :
- find $HOME/.ivy2 -name "ivydata-*.properties" -delete
- find $HOME/.sbt -name "*.lock" -delete
cache :
directories :
- $HOME/.cache/coursier
- $HOME/.ivy2/cache
- $HOME/.sbt/boot
- $HOME/.sdkman
ãžã§ããèµ°ããšã以äžã®ããã«è¡šç€ºãããã¯ãã :
2019-02-17
Docker å
ã§ sbt ãèµ°ããããã£ãã®ã§ãã€ã¡ãŒãžãããã€ãäœã£ããGitHub ãªããžããªã¯ eed3si9n/docker-sbt ã
2019-01-03
幎æ«ã®é£äŒäžã« Pamflet ã® left TOC (ç®æ¬¡) ãå®è£
ããŠãPamflet 0.8.0 ãšããŠãªãªãŒã¹ããã
Pamflet ã¯çãææžãç¹ã«ãªãŒãã³ãœãŒã¹ã»ãœãããŠã§ã¢ã® ãŠãŒã¶ã»ããã¥ã¡ã³ããå
¬éããããã®ã¢ããªã ã
2018-12-17
/ scala
çŸè¡ã® Scala 2.13.0-M5 ã®ãŸãŸã§è¡ããšãscala.Seq 㯠scala.collection.Seq ãã scala.collection.immutable.Seq ã«å€æŽãããäºå®ã ãScala 2.13 collections rework ã«äœæ
ä»ãŸã§äžå€ãããªãã£ãã®ãã®è§£èª¬ãå°ãæžãããŠãããè¡éããæšãéããšãscala.Seq ãããã©ã«ãã§äžå€ã«ãªãããšãåã¶ã¹ãã ãšèšã£ãŠãããã ãšæãã
ããã©ã«ãã§åãäžå€ã«ãªãããšã¯ã¢ããªãæ°ããæžãããã³ãŒãã«ã¯è¯ãããšã ãšæããã©ã€ãã©ãªäœè
ã«ãšã£ãŠã¯ããå°ããã¿ãã£ãŠãããããããªãã
ããªããã¯ãã¹ãã«ããããã©ã€ãã©ãªãæã£ãŠããŠ
ã©ã€ãã©ãªã®ãŠãŒã¶ãè€æ°ã® Scala ããŒãžã§ã³ã䜿ã£ãŠããŠ
ã©ã€ãã©ãªã®ãŠãŒã¶ã Array(...) ã䜿ã£ãŠããå Žå
ãã®äžå€ Seq ãžã®å€æŽã¯ãbreaking change ã€ãŸãéäºæãª API 倿Žãšãªãããã
倱æäŸãšããŠã¯ scopt/scopt#218 ããããåã scopt ã®ã¯ãã¹ãã«ããè¡ã£ãããargs ãæž¡ããªããªã£ãããããScala 2.13.0-M5 ã«ãããŠã args 㯠Array[String] ã®ãŸãŸã ã
ã·ã³ãã«ãªä¿®æ£ã¯å
šãŠã®ãœãŒã¹ã«ãã㊠scala.collection.Seq ã import ããããšã ãåãæ¬²ããã®ã¯ Seq ã䜿ããšã³ã³ãã€ã«ãéããªããªãããšã ã
scala.Seq ã unimport ãã
ãŸãæåã«ãã£ãŠã¿ãã®ã¯ scala.Seq ã unimport ããŠãscala.collection.Seq ã scala.collection.immutable.Seq ã®ã©ã¡ããã import ããããšã匷å¶ããããšã ã
import scala.{ Seq => _ , _ }
æãå€åŽã«ããã¹ã³ãŒãå
ã§ããã©ã«ãã® import scala._ ã«ãã£ãŠ Seq ãšããååãæçžãããŠãããããããã¯å¹æãç¡ããããšãããèããŠã¿ããšãããä»®ã«ãããããŸããã£ããšããŠã import æãå
šãŠã®ãœãŒã¹ã«å¿ããã«æžããªããã°ãããªãã®ã§ãè¯ãæã§ã¯ç¡ãã
2018-11-20
æè¡ã«ã³ãã¡ã¬ã³ã¹ã«ããã女æ§ã®åå ç (ããã®ä»ã®ããã¯ã°ã©ãŠã³ããæã€äººã®åå ç) ãæ¹åããã«ã¯ãåšèŸºã®ã«ã«ãã£ãŒãå€ããŠããå¿
èŠãããããã®ããã«ã¯ä»¥äžã® 2ç¹ã«é¢ããŠããããªãšããã·ã°ãã«åãšã³ãã¥ãã±ãŒã·ã§ã³ãå¿
èŠãšãã
ã«ã³ãã¡ã¬ã³ã¹ã§å¥³æ§åå è
ããã³ãããã®ã¯ãã¡
æè¡çãªèœåãåæãšããŠã女æ§åå è
ãšãããã§ãã·ã§ãã«ãã€å¯Ÿçã«æ¥ãã
ãããã¯å
šãŠã®ã«ã³ãã¡ã¬ã³ã¹ã«ãããŠåºèª¿è¬æŒã®åãšã瀟亀ã¿ã€ã ã®åã«ç¹°ãè¿ãé£çµ¡ãããã¹ãäºé
ã ã
2018-10-01
/ sbt
鱿«äžã« sbt ã®ããã® super shell ã®å®è£
ããŸãšãŸã£ãŠããã®ã§ããã«å ±åããã倧ãŸããªæŠèŠãšããŠã¯ãã¿ãŒããã«ç»é¢ã®äž nè¡ãä¹ã£åã£ãŠä»èµ°ã£ãŠããã¿ã¹ã¯ã衚瀺ãããã
ãã°ãçŸç¶å ±åã«äœ¿ãããšã®éç
ãã°ã¯å€ãã®å Žé¢ã§æçšã§ãæãšããŠã¯äœãèµ·ãã£ãŠããããç¥ãããã®å¯äžã®çŸå®è§£ã§ãã£ãããããã ãã©ããsbt ã®ãããªã³ã³ãœãŒã«ã¢ããªã«ãããŠã¯ããã°ã䜿ã£ãŠãã«ãã»ãŠãŒã¶ã«çŸåšãªã«ãèµ·ãã£ãŠããããå ±åããã®ã¯ããŸããããªãããšãããã
仮㫠sbt ãäžåãã°ã衚瀺ããªãã£ããšãããšãsbt ãé·æéèµ°ãã¿ã¹ã¯ãå®è¡ããŠäžèŠåºãŸã£ãŠããŸã£ããšãã«äœãèµ·ããŠãããåãããªããªãããã®ãããupdate ã®ãããªã¿ã¹ã¯ã¯ “Updating blabla subproject” ãš “Done updating” ãšãã£ãéå§ãçµäºãã°ã衚瀺ãããupdate ã¿ã¹ã¯ã¯ãŠãŒã¶ããã«ãã«ãã£ãŠéåžžã«é·ãæéãããã£ãŠããŸãããšã§æåã ããå°ãªãã©ã€ãã©ãªäŸåæ§ãæã€ãã®ä»ã®å€ãã®ãã«ã㯠1s 以å
ã§å®äºããããã®ãããªå Žåããã«ãã®éå§æã« “Done updating” ããºã©ãŒããšå£ã®ããã«äžŠã¶ããšã«ãªãã
ã€ãŸãããã°è¡šç€ºãçŸç¶å ±åã«äœ¿ãã®ã¯ãã°ãåºãããŠããããç¶æ
ãšãæ
å ±ãè¶³ããªããŠäžäŸ¿ãªäž¡æ¥µç«¯ã®éãæºããããšã«ãªãã
show your work (éäžåŒãæžãããš)
人çã«ãããå€ãã®äºãšåæ§ã«ããã£ãããšã®æç€ºæ¹æ³ããŠãŒã¶ãŒã»ã€ã³ã¿ãŒãã§ã€ã¹ã¯ãã®äœæ¥ãšããããã¯ããã®ãã®ã®å¿
èŠäžå¯æ¬ ãªåŽé¢ã§ãããç¹ã«ãã®äœæ¥ããããã¯ããèªæã§ç¡ããã®ã»ã©ãããé¡èã«ãªãã
åã¯ãsbt ãåäžã®ã³ãã³ãå®è¡å
ã«ãããŠã¿ã¹ã¯ã䞊ååŠçããããšãåœããåã®ããã«èããŠãããããããæè¿ã«ãªã£ãŠãã®äºãç¥ããªã人ãããå Žé¢ã«åºãããããšãå¢ããŠãããããã¯ãå®ã¯ãã£ãšããªããšã ããªããªãããã«ãã® DSL ããŠãŒã¶ã€ã³ã¿ãŒãã§ã€ã¹ã sbt ãã¿ã¹ã¯ã®äžŠååŠçãè¡ã£ãŠããããšãæããã«ããŠããªãããã ã
ããã«ãå€åã®ãŠãŒã¶ã sbt ãã¿ã¹ã¯ã䞊åå®è¡ããŠããããšãä¿¡ããŠãããšããŠããçŸåšã¯ã©ã®ã¿ã¹ã¯ãããã©ãŒãã³ã¹ã®ããã«ããã¯ã«ãªã£ãŠããã®ããç¥ãã®ãé£ãããäœããã®ãã©ã°ã€ã³ãäžå¿
èŠã« update ãåŒã³åºãããããœãŒã¹ãäžåå€ãã£ãŠããªãã®ã«ããã»ã¹å€ã® Typescript ã³ã³ãã€ã©ãåŒã³åºãããããŠãããããããªãã
super shell
çŸåšå®è¡äžã®ã¿ã¹ã¯ã衚瀺ãã “super shell” ã¯ãããã®åé¡ã解決ããã1s 以å
ã«å®è¡ããã¿ã¹ã¯ã¯ç»é¢ã«ã¯è¡šç€ºããããé·æéèµ°ã£ãŠããã¿ã¹ã¯ã¯ã«ãŠã³ãã¢ããããæèšã衚瀺ãããã
åããŠåããã®ãããªæ©èœã«æ°ä»ããã®ã¯ Gradle ã® “rich console” ã ãBuck ããããå®è£
ããŠããŠã“super console” ãšåŒã°ããŠãããããã®ã§ãåããã®ååãåããããšã«ããã
super shell ã®å®è£
æ¹æ³
äžã¶æãããåã« Scala ã§æžãã³ã³ãœãŒã«ã»ã²ãŒã ãæžããããå®ã¯ããã¯ãã®æ©èœã®ããã®äºåç ç©¶ã ã£ãã
2018-09-20
/ scala
ã³ã³ãã€ã«ããããããªããã°ã³ã³ãã€ã«ããªããèŠåãªã©ãããªããæè¿æ°ã«å
¥ã£ãŠãã Scala ã³ã³ãã€ã©ã®ãã©ã°ã¯ "-Xlint" ãš "-Xfatal-warnings" ã® 2ã€ã ã
以äžã¯ããµããããžã§ã¯ããšå
±ã«äœ¿ããã»ããã£ã³ã°ã®äŸã :
ThisBuild / scalaVersion : = "2.12.6"
lazy val commonSettings = List (
scalacOptions ++= Seq (
"-encoding" , "utf8" ,
"-deprecation" ,
"-unchecked" ,
"-Xlint" ,
"-feature" ,
"-language:existentials" ,
"-language:experimental.macros" ,
"-language:higherKinds" ,
"-language:implicitConversions"
),
scalacOptions ++= ( scalaVersion. value match {
case VersionNumber ( Seq ( 2 , 12 , _ *), _ , _ ) =>
List ( "-Xfatal-warnings" )
case _ => Nil
}),
Compile / console / scalacOptions --= Seq ( "-deprecation" , "-Xfatal-warnings" , "-Xlint" )
)
lazy val foo = ( project in file( "foo" ))
. settings(
commonSettings,
name : = "foo" ,
)
-Xlint ãšã¯?
-Xlint ã¯è²ã
ãªã³ã³ãã€ã«èŠåã远å ããã@smogami ããã Scala Compiler Options ãšããããŒãžãã³ã³ããªãã¥ãŒãããŠãããã®ã§ -Xlint ãäœããã£ãŠããã®ããèªããããã«ãªã£ãã
çºåããèŠåã®äžäŸãšããŠãååŒæ°ã Any ã«æšè«ããããšèŠåãã -Xlint:infer-any ãšããã®ãããã
-Xfatal-warnings
èŠåãåé¡ãªã®ã¯ãã ãããåŸåãã«ãããŠå±±ç©ã¿ã«ãªã£ãŠããŸãããšã ã-Xfatal-warnings ã¯èŠåãã³ã³ãã€ã«ã»ãšã©ãŒã«ããã®ã§ç¡èŠã§ããªããªãã
silencer ãçšããèŠåã®æå¶
ãã ããèŠåãåé¿äžå¯èœãªå ŽåããããäŸãã°ãåŸæ¹äºææ§ã®ããã« deprecated ãªã¡ãœããã䜿ãå¿
èŠããããããããªããç¹å®ã®åŒã ãã§èŠåãæå¶ã§ããã°ãããšæãã
2018-09-15
/ git
GitHub ã® pull request ãäžå¿ã«äœæ¥ããŠãããšãããããšãããªããã©ã³ããããŒã«ã«ã«æºãŸã£ãŠãããæ¬çš¿ã§ã¯ããã®ãããªãããŒã«ã«ãã©ã³ããæé€ããæ¹æ³ãã¿ãŠã¿ãã
åºæ¬çã« 2ã€ã®æŠç¥ããããšæã:
“master” ãã©ã³ããéžãã§ãããã«ããŒãžæžã¿ã®ãã®ãåé€ãã
GitHub äžã§æ¢ã«ãã©ã³ãã¯åé€ãããŠããåæã§ããªã¢ãŒãã® “origin” ã«ã¯ããç¡ãããŒã«ã«ã®ãã©ã³ããåé€ãã
Erik Aybar ããã® Git Tip: Deleting Old Local Branches ãšããããã°èšäºã¯ç¬¬2ã®æ¹æ³ããšã£ãŠããã
git gone
git gone ã¯ãErik Aybar ããã®ãã¯ããã¯ãããŒã¹ã«åãæžããã«ã¹ã¿ã git ã³ãã³ãã ãBash ã§ã¹ã¯ãªããæžãã®ã¯äžæ
£ããªã®ã§ Google ãšã Stackoverflow ãèŠãªããæžããããäžå¿åããŠãããŠãããšæããeed3si9n/git-gone ã«ãœãŒã¹ã貌ã£ãã®ã§ããã ~/bin ãªã©é©åœãªå Žæã« git-gone ãšããŠä¿åããã
äœ¿ãæ¹ã¯ git gone ãšæãŠã°åºãŠããããã«ãã: