KeenType
teavm
KeenType | teavm | |
---|---|---|
13 | 30 | |
104 | 2,491 | |
- | - | |
10.0 | 9.5 | |
8 months ago | 5 days ago | |
Java | Java | |
GNU General Public License v3.0 or later | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
KeenType
-
LaTeX3: Programming in LaTeX with Ease
> modern languages like Markdown
Markdown was created in 2004. From the creator:
> ... the single biggest source of inspiration for Markdown’s syntax is the format of plain text email.
Email goes back to 1965, though I suspect Markdown's influence stems from the more widely adopted email usage from the 1990s.
> Part of LaTeX's success was the absolutely beautiful documents it can make with nothing but a personal computer.
I'd say that was TeX's success, with LaTeX bolted on later to greatly improve TeX's extensibility. Keep in mind, there are a number of TeX-centric implementations beyond LaTeX. For example, my fork of NTS, called KeenType, is a pure Java version of TeX that can typeset beautifully and has at its core Knuth's original TeX files.
https://github.com/DaveJarvis/KeenType/tree/main/tex/src/mai...
-
Expanding TeX's \Newif (2021)
My port of the New Typesetting System (NTS), called KeenType, whittles down the Java-based implementation to a few of Knuth's files. Namely, "plain.tex" and "hyphen.tex":
https://github.com/DaveJarvis/KeenType/tree/main/tex/src/mai...
Getting familiar with the fonts required understanding the difference between font metrics (TFM files) and the fonts themselves. To make matters a little less straightforward, Knuth created a special character mapping for indexes into the fonts. It was not easy to find a font that mapped those glyphs exactly. The closest font was BaKoMa:
https://github.com/DaveJarvis/KeenType/tree/main/tex/src/mai...
This required hard-coding a mapping between Knuth's code points and the actual code points in the target font:
https://github.com/DaveJarvis/KeenType/blob/989dbe26f68eda75...
-
The fastest math typesetting library for the web
A while ago I optimized KeenType, which although not JavaScript-based, generates SVG images, which can be embedded into web pages.
https://github.com/DaveJarvis/keentype
The following tutorial shows the real-time rendering speed of KeenType within my text editor, KeenWrite:
https://youtu.be/vgyYXwwF_lc?list=PLB-WIt1cZYLm1MMx2FBG9KWzP...
- Reducing code size in (Rust) librsvg by removing an unnecessary generic struct
- KeenType: Pure Java typesetting system
-
Different algorithms for converting binary to decimal floating-point numbers
In Java, many number-to-string implementations use NumberFormat. This is abysmally slow if the problem domain doesn't require internationalization, which is the case for machine-readable file formats, such as SVG. When I performance tested JMathTeX for rendering TeX, the bottleneck for converting TeX into SVG elements was JFreeSVG's use of NumberFormat[0]. Replacing NumberFormat with RyuDouble doubled the throughput[1]. (Reusing a StringBuilder for to concatenate strings yielded another doubling.)
For KeenType[2], a fork of the New Typesetting System (and more complete TeX implementation than JMathTeX), I added an SVG generator that converts numbers to string using a StackOverflow answer[3], instead of using Ryu[4]. The performance was even better and the algorithm vastly simpler.
Knuth was right: measure, then optimize.
[0]: https://github.com/jfree/jfreesvg
[1]: https://github.com/jfree/jfreesvg/pull/30
[2]: https://github.com/DaveJarvis/KeenType
[3]: https://stackoverflow.com/a/10554128/59087
[4]: https://github.com/DaveJarvis/KeenType/blob/fef005579021f394...
-
KeenWrite 3.2.0
KeenType, a modernized and optimized NTS fork, replaces KeenTeX.
teavm
-
Spin 2.0 – open-source tool for building and running WASM apps
Joel from our team worked on the initial prototype for WASI support in TeaVM (https://github.com/konsoletyper/teavm/pull/610), and we temporarily forked before the WASI support made it to the official repo.
Good reminder to deprecate that now!
-
Bring garbage collected programming languages efficiently to WebAssembly
A number of concerns with the viability of the current WASM GC are covered here (Google translation to English):
https://habr-com.translate.goog/ru/articles/757182/?_x_tr_sl...
and the original article:
https://habr.com/ru/articles/757182/
This is from the author of TeaVM, who has 10 years of experience getting Java and JVM code to run efficiently in the browser. https://teavm.org/
TeaVM's existing transpilation of Java to JavaScript performs well (using the browsers JS GC). It will be interesting to see if WASM GC matures to the point where it is even faster.
-
Play Runescape Classic Again
Uses this apparently: https://github.com/konsoletyper/teavm
- ASP.NET Core Dev Team Launches 'Blazor United' Push for .NET 8
- Pure Java Typesetting System
-
Embed your Doom in Java with GraalVM Wasm.
How does this compare to say the TeaVM (https://github.com/konsoletyper/teavm) which I know only has "experimental" WASM support at the moment?
-
Regex101.com needs help getting a small Rust WASM binary
For Java, no WASM file is requested. Maybe the Java code was transpiled to JavaScript, perhaps using TeaVM.
-
Oracle Contributing GraalVM Community Edition Java Code to OpenJDK
>> It's not like you can take a random JAR and convert it to WASM.
Maybe you can:
TeaVM is an ahead-of-time compiler for Java bytecode that emits JavaScript and WebAssembly that runs in a browser. Its close relative is the well-known GWT. The main difference is that TeaVM does not require source code, only compiled class files. Moreover, the source code is not required to be Java, so TeaVM successfully compiles Kotlin and Scala.
https://teavm.org/
I have never had an opportunity to try out TeaVM, but it seems promising.
-
Using Java for the front-end of a web app in 2022
For a fast, lightweight, Java-based front-end, try TeaVM and its Flavour toolkit:
https://teavm.org/
It is easy to get started by using the maven archtetype, there's an tutorial in Java Magazine here:
https://blogs.oracle.com/javamagazine/post/java-in-the-brows...
With TeamVM and Flavour you get a full front-end SPA framework that lets you code business logic in Java, and pair that with HTML and CSS to make components.
To see what it can do, check out Wordii, a fast-paced 5-letter word game:
-
TSMC to Begin 3nm Chip Production Next Month, Apple gets first dib
> Someone will make the JRE run on WASM
https://teavm.org/
Minecraft contains some native dependencies, though; you'll need something like https://copy.sh/v86/ or https://bellard.org/jslinux/ with the right operating system image to run it in browser.
What are some alternatives?
Sentinel - A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件)
Graal - GraalVM compiles Java applications into native executables that start instantly, scale fast, and use fewer compute resources 🚀
asciimathml - A new home for asciimathml
HumbleUI - Clojure Desktop UI framework
awesome-typst - Awesome Typst Links
teavm-flavour - Framework for writing client-side applications using TeaVM
latex-snippets - Vim + LaTeX snippets setup
spring-fu - Configuration DSLs for Spring Boot
KmCaster - Capture keyboard and mouse events for screencasting
wasm3 - 🚀 A fast WebAssembly interpreter and the most universal WASM runtime
jfreesvg - A fast, lightweight Java library for creating Scalable Vector Graphics (SVG) output.
helidon - Java libraries for writing microservices