先日、Scala CLI v1.0.0がついにリリースされた。これまではv0系列だったので、満を持しての正式版リリースだ。おめでとう! github.com いちおう説明しておくとScala CLIは総合的なScalaのコマンドラインツールで、以下のようなことができる: Uber JAR(単体で動作するJARファイル)の生成 GraalVMを使ったバイナリの生成 Scala Nativeを使ったバイナリの生成 REPL Scala Scriptの実行環境 このように多彩な機能を持つScala CLIは、現在のscalaコマンドを置換して将来的なscalaコマンドになることが決まっている。 さて、リリースノートによればScala CLIではv1.0.0からScala 3.3.0をデフォルトで利用することになった。Scala 3.3.0にはいくつもの修正や追加機能が含まれているが、今回はその中
そういえばScalaをAWS Lambdaで実行するのどうするんだっけ、と思った。実はScalaをLambdaで動かしたことは無い気がするので調べておいた。今回はJava 17を前提に動作させる。 tl;dr AWS LambdaのJavaランタイム sbt-assembly sbt-assemblyへの依存性の宣言 ファイル名衝突時の設定 その他のsbtの設定 最終的なbuild.sbt コード本体 ビルド AWS Lambda側の設定 まとめと感想 参考文献 追記 今回書いたサンプルプロジェクトはこちら。 github.com tl;dr sbt-assemblyを使ってUber JARを生成する AWS LambdaをJavaランタイムでセットアップする エントリポイントを指定する JARをアップロードする 動く AWS LambdaのJavaランタイム けっこう前から、AWS La
Scala 3でコンパイル時計算がいろいろ便利になっていそうなので, 練習として拡張可能レコード(extensible record)を実装してみた. 前回はmatch typesで型レベルの操作のみでいろいろできたから, 今回もそういうつもりでやろうと思ったものの, けっきょくマクロが必要で, Scala 3のマクロの練習という感じになった. Scala 3のマクロはScala 2からはだいぶ変わっていて, かなり便利になっていることがわかった. 追記 (2023-11-22) ちゃんと実装してライブラリ化した: 拡張可能レコードとは 拡張可能レコードは, フィールドが追加される度に型が拡張されて, 追加したフィールドにアクセスできるようなもののこと. 追加していないフィールドにはアクセスできない. 途中でフィールドを足していける構造体という感じのもの. 以下のようなイメージ val r
こういう記事を読んだ。 transparent-to-radiation.blogspot.com なんかScalaのメモリ使用量が異常に多いなと思って、調べた。検証コードもアップした。 github.com 検証として、様々なJVM(OpenJDKとかCorettoとか)とそのバージョン(8, 11, 17)でJARを実行して考察した。JVMを用意するためにASDFを使った。また、ASDFから引っぱってこれないJVMのバージョン(OpenJDKの8など)は省略している。 JAVA_OPTSは-Xms100M -Xmx2Gである。 手元のマシン(Linux x86_64 Xeon W-10855M 2.80GHz 64GiB RAM)でのrun-matrix.shの実行結果は、以下の通り(各列は、JVM、計算件数、実行時間Sec、メモリ総使用量KiB)。 openjdk-11 openjd
お知らせ この記事へのフィードバックを受けて、以下に更新版「プログラミング言語の実行速度比較(2023/5)」を公開しています。コメントをお寄せくださった皆様ありがとうございます。 プログラミング言語の実行速度比較(2023/5) はじめに 2019年に「言語間の速度比較」という記事を投稿した。 それから4年近く経過したので、それぞれの言語の最新版で再度検証する。また、サポートが終了したPython2の代わりに近年人気が高いRustを追加する。さらにC言語で算出した素数の格納をrealloc()で確保した領域にする評価も追加した。評価には、シングルスレッドで順次既知の素数で割ることで1億までの素数を求めるプログラムを使用(ソースはここ) 言語 時間 (sec) 最大使用物理メモリ(MiB) 算出素数格納コンテナ 補足情報 感想 C 12.6 25.1 固定長配列 gcc 12.2.0 最適
2023-04-17 / scalamatsuri 今週末、virtual/Tokyo ハイブリッドの ScalaMatsuri が開催された。まずは、登壇者の皆さん、スポンサー各社、参加者の皆さんにお礼します。 初のハイブリッドということで、至らない点も多々あったけども、成功したカンファレンスだったのではと思う。僕は、16名の ScalaMatsuri スタッフの一員、それからメインのセッションと飛びコンでの登壇者として参加させてもらった。 ScalaMatsuri の 10年 過去のエディションのハイライトをいくつか振り返ってみる: ScalaMatsuri の前身となる Scala Conference in Japan 2013 が 2013年3月2日に開催され、僕はスタッフとして訪日した。カンファレンスを翻訳するによると、僕は RubyKaigi の真似をして IRC から we
はじめに この記事は ScalaMatsuri 2023 で発表されるセッション「traverseを制する者はコードを制す」の補完記事です。セッション時間の都合上カットした traverse の実装面を焦点に解説します。 traverse がどういったシーンで役に立つのか等は本セッションをご参照ください。 使用する言語・ライブラリのバージョンは以下の通りです。 Scala 3.2.2 cats 2.7.0 構造を保ったまま要素に関数を適用する さて traverse とはどんな関数なのかと言うと、構造を保ったまま要素に関数を適用する関数です。 そう聞くと最近のメジャーな言語にはおおよそ存在している map の事を思い浮かべる方も居る事でしょう。 その通り map も構造を保ったまま要素に関数を適用する関数と言えます。 val list = List(1, 2, 3, 4, 5) list.
class: center, middle # The programmer that controls the `traverse`, controls the code. Scala Matsuri 2023 2023/04/15<br> @gakuzzzz --- class: left, top ## Who am I * Manabu NAKAMURA * Twitter: [@gakuzzzz](https://twitter.com/gakuzzzz) * Tech to Value Co.,Ltd. CEO * Alp, Inc. Tech Lead --- class: left, top ## Note The Scala code in this slide uses version 3.2.2. It uses [cats](https://typelevel.or
サーバーサイド開発部で Scala アプリケーションの開発運用をおこなっている hayasshi (@hayasshi_) です。 昨年 2022 年 10 月 6 日に、Chatwork ではフリープランの制限の変更をおこないました。*1*2 「参加できるグループチャットの累計数」から、「閲覧できるメッセージの期間と数」へと制限が変更になったのですが、 この 閲覧できるメッセージの数 の計算を、Scala のバッチアプリケーションでおこなっています。 今回はそのアプリケーションについて、設計や構成をご紹介したいと思います。 Chatwork フリープランにおけるメッセージ閲覧制限について 2023 年 4 月 14 日現在、Chatwork フリープランのアカウントが閲覧できるメッセージは、 投稿されてから 40 日以内でかつ、組織全体で 5000 件まで となっています。 「投稿されて
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く