GithubHelp home page GithubHelp logo

sensuikan1973 / libedax4dart Goto Github PK

View Code? Open in Web Editor NEW
5.0 1.0 0.0 58.8 MB

dart wrapper for libedax

Home Page: https://pub.dev/packages/libedax4dart

License: GNU General Public License v3.0

Dart 99.63% Shell 0.37%
dart edax othello codecov ffi windows macos linux dart-ffi reversi

libedax4dart's Introduction

Dart CI codecov

Dart wrapper for libedax.
With using libedax4dart, you can execute functions equivalent to edax commands.

Usage

  1. Add libedax4dart under dependencies in your pubspec.yaml.
  2. Add your libedax assets in the path which you like.
    If you don't have yours, you can also download from here.
  • (Required) dynamic library
    • macos: libedax.universal.dylib
    • windows: libedax-x64.dll
    • linux: libedax.so
  • (Optional) data for edax
    • book.dat
    • eval.dat
  1. With using LibEdax, you can run edax commands !

Document

Real World Example

References

libedax4dart's People

Contributors

dependabot[bot] avatar github-actions[bot] avatar sensuikan1973 avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

libedax4dart's Issues

future; migrate to ffigen

binding の実装はおおむね終わったものの、binding 定義を yaml に押し込める ffigen はやはり魅力的。
しかし、ffigen はまだ実験段階であり安定してなかったり、いくらか機能が欠けていたりするため、まだ採用には至ってない。
(#10 に書いたように inline Array の workaround 対応は参考にしてる。)

用途を考慮すると、課題は以下の通り。これらの対応が入って動くようになったら移行を検討したい。暇があれば contribute したり issue 立てたりしよう。

  • inline array in Structs (dart-lang/sdk#35763) 。根本的には dart 側の進捗に依存するが、繋ぎとして ffigen は workaround 対応を入れてるのが素晴らしい。
    • これ、結構重要なので dart:ffi の今後に期待。
    • 愚直にやろうとすると、構造体を丸ごと解釈しなきゃいけなくてだいぶ怠い。 C の Struct を丸ごと Pointer<Uint8> でとってきてがんばる感じになるやつ。
  • null safety (dev ブランチが一部対応漏れてた)
  • ポインタ前置き宣言への対応。 Foo* foo に対応できてなかった気がする。もちろん、Foo *foo はいけてた。
  • Nested Structs (dart-lang/native#541) 。今は dev リリースには入ってる状態だが、dev はエラー出て動かなかった..
  • 生成ファイルがだいぶデカくなるからか、IDE での補完がだいぶ重くなってしまった。ffigen に関数単位でのフィルタリング機能があれば解消される。期待。

#38 もあるけど、まあそれはだいぶ先になりそう。

coverage

flutter の時と同じノリで簡単い lcov 形式で出力できると思ってたんだけど、package 追加しないとできなそう。
See: dart-lang/test#1265

言っても簡単に終わるのでやろうかな。

CI on ubuntu/windows sometimes CRASH

e.g. https://github.com/sensuikan1973/libedax4dart/runs/1746824097

===== CRASH =====
si_signo=Illegal instruction(4), si_code=2, si_addr=0x7f1bcbf8506a
version=2.12.0-133.7.beta (beta) (Tue Jan 12 09:25:38 2021 +0100) on "linux_x64"
pid=2673, thread=2714, isolate_group=main(0x55ec8e35ae00), isolate=main(0x55ec8c7a1800)
isolate_instructions=55ec89a0ea80, vm_instructions=55ec89a0ea80
Stack dump aborted because InitialRegisterCheck failed.
00:01 +0: ./test/libedax4dart_test.dart: initialize without args, and set option                                                                                                                       
/home/runner/work/_temp/6f232b6f-6fd4-4c38-8c07-db1f8c5c808c.sh: line 1:  2673 Aborted                 (core dumped) pub run test .

https://github.com/sensuikan1973/libedax4dart/runs/1758701553 も。

enable-auto-merge doesn't work

https://github.com/sensuikan1973/libedax4dart/actions/runs/7717379727/job/21036367593

Run gh pr merge -R "sensuikan1973/libedax4dart" --squash --auto "496"
  gh pr merge -R "sensuikan[19](https://github.com/sensuikan1973/libedax4dart/actions/runs/7717379727/job/21036367593#step:9:21)73/libedax4dart" --squash --auto "496"
  shell: /bin/bash --noprofile --norc -e -o pipefail {0}
  env:
    DART_HOME: /Users/runner/hostedtoolcache/dart/3.2.6/x64
    PUB_CACHE: /Users/runner/.pub-cache
    PULL_REQUEST_NUMBER: 496
    GH_TOKEN: ***
GraphQL: Field 'isMergeQueueEnabled' doesn't exist on type 'PullRequest' (query PullRequestByNumber.repository.pullRequest.isMergeQueueEnabled)

actions/labeler@v5 label config has been changed?

Run actions/labeler@v5
  with:
    repo-token: ***
    dot: true
    configuration-path: .github/labeler.yml
    sync-labels: false
The configuration file (path: .github/labeler.yml) was found locally, reading from the file
Error: Error: found unexpected type for label 'GitHub Actions' (should be array of config options)
Error: found unexpected type for label 'GitHub Actions' (should be array of config options)

future; use Dart SDK "beta"

dev SDK を使う場合、pub.dev のチェックが完全に死ぬ(pub.dev は SDK beta より先のものを対象外としているため)。
そのため、異様に Score が低くなっているが、しょうがない。

beta SDK でも動くようにすればいいが、ffi 周りの差分を吸収できないので、ひとまず dev を前提としている。
beta にすると、各種 struct 定義について以下のエラーで落ちる。

"Field '#name' requires exactly one annotation to declare its C++ type, which cannot be Void. dart:ffi Structs cannot have regular Dart fields."

将来的には、beta を使うように変えたい。

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.