powersort/README.md

65 lines
1.2 KiB
Markdown
Raw Permalink Normal View History

2024-11-19 19:15:58 +01:00
# Bring Powersort to Java
## Gradle
### Setup
Dependencies (JDK23, Gradle, IntelliJ) can be installed by running `nix-shell`.
**Commandline**
Check which Java toolchains Gradle finds:
2024-11-19 19:15:58 +01:00
```shell
./gradlew javaToolchains
```
This should include version >= 23, e.g.:
2024-11-19 19:15:58 +01:00
```
+ N/A JDK 23-ga
| Location: /nix/store/48290hnlb13xmwjw9y16a1s785993bv7-openjdk-23-ga/lib/openjdk
| Language Version: 23
| Vendor: N/A
| Architecture: amd64
| Is JDK: true
| Detected by: Current JVM
```
**IntelliJ**
When using `nix-shell`, some configuration is necessary:
- STRG ALT SHIFT s -> SDK -> add JDK ->
- home path: /usr/lib/openjdk
- name: usr-lib-jdk
- STRG ALT s -> build tools -> gradle ->
- local installation: /usr/lib/gradle
- Gradle JVM: usr-lib-jdk
2024-11-19 19:15:58 +01:00
### Tasks
2024-11-19 19:24:56 +01:00
List all Gradle tasks which can be run:
2024-11-19 19:15:58 +01:00
```shell
./gradlew tasks
```
2024-11-19 19:24:56 +01:00
This can also be done graphically in IntelliJ:
![intellij-gradle.png](intellij-gradle.png)
2024-11-19 19:35:34 +01:00
### Test Cases
2024-11-19 19:15:58 +01:00
Run the task "test":
```shell
./gradlew test
```
2024-11-19 19:35:34 +01:00
## TimSort
Imported from
- src/java.base/share/classes/java/util/TimSort.java
- src/java.base/share/classes/java/util/ComparableTimSort.java