<commit_before>![icon](/android/src/main/res/mipmap-xxhdpi/ic_launcher.png)

# Palm/compute Android Client

The Android client is complete enough to be useful, but lacks some conveniences
that would improve its utility. Currently, upon start, it presents a form for
entering the address of some compute service. Upon successful connection to
such a service, it displays basic statistics about any work progress.

The client currently runs on any platform on which [LuaJIT][ljit] can run,
which is most 32-bit Android platforms, and the 64-bit x86 platform.

[ljit]: http://luajit.org/

## Architecture

At the heart of the client is the [Computer][cmp] class, which actually is part
of the [Core][core] library, and not of the actual Android client. An instance
of this class keeps track a tread of pools, one for each available CPU core,
each with its own [AndroidComputeContext][acc]. When the Computer receives new
work via its [ComputeClientTcp][cclt], it puts that work on a queue, and the
first free ComputeContext in its thread pool will take it from the queue and
process it.

[lcm]: https://github.com/emanuelpalm/lua-compute
[cmp]: /core/src/main/java/se/ltu/emapal/compute/Computer.kt
[core]: /core
[acc]: src/main/java/se/ltu/emapal/compute/AndroidComputeContext.java
[cclt]: /core/src/main/java/se/ltu/emapal/compute/io/ComputeClientTcp.kt
<commit_msg>Update android/README.md<commit_after>![icon](/android/src/main/res/mipmap-xxhdpi/ic_launcher.png)

# Palm/compute Android Client

The Android client is complete enough to be useful, but lacks some conveniences
that would improve its utility. Currently, upon start, it presents a form for
entering the address of some compute service. Upon successful connection to
such a service, it displays basic statistics about any work progress.

The client currently runs on any platform on which [LuaJIT][ljit] can run,
which is most 32-bit Android platforms, and the 64-bit x86 platform.

[ljit]: http://luajit.org/

## Architecture

At the heart of the client is the [Computer][cmp] class, which actually is part
of the [Core][core] library, and not of the actual Android client. An instance
of this class keeps track a pool of threads, one for each available CPU core,
each with its own [AndroidComputeContext][acc]. When the Computer receives new
work via its [ComputeClientTcp][cclt], it puts that work on a queue, and the
first free ComputeContext in its thread pool will take it from the queue and
process it.

[lcm]: https://github.com/emanuelpalm/lua-compute
[cmp]: /core/src/main/java/se/ltu/emapal/compute/Computer.kt
[core]: /core
[acc]: src/main/java/se/ltu/emapal/compute/AndroidComputeContext.java
[cclt]: /core/src/main/java/se/ltu/emapal/compute/io/ComputeClientTcp.kt

{'fraction_non_alphanumeric': 0.08898614150255288, 'fraction_numerical': 0.00437636761487965, 'mean_word_length': 4.762605042016807, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5727829', 'n_tokens_mistral': 829, 'n_tokens_neox': 812, 'n_words': 339}