Commit graph

4331 commits

Author SHA1 Message Date
Marc Durdin
534bd2a54b
Merge pull request #8416 from keymanapp/chore/common/build-script-performance
chore(common): build script performance improvements
2023-03-14 15:41:32 +11:00
Joshua A. Horton
f5e64a10a5 chore: Merge branch 'chore/common/ldml-ts-and-node-updates' into chore/feature-esmodule-master-update 2023-03-14 09:23:39 +07:00
Joshua A. Horton
2439ba4e97 fix(developer): updates kmc, web/types module resolution, adds missing type import/exports 2023-03-14 08:41:29 +07:00
Joshua A. Horton
0da7ac24be chore(common): updates TS, sets export map for keyman-version 2023-03-14 08:22:26 +07:00
Ramesh Kunnappully
8647610d16
Update copyright period in License.rtf 2023-03-13 23:52:25 +05:30
Marc Durdin
92ed99c4d6 chore(common): build script performance improvements
Improves build script performance by:
* using built-ins wherever possible (e.g. string splitting)
* eliminating redundant code
* using absolute (to $KEYMAN_ROOT) rather than relative paths to avoid realpath
* removing unnecessary `npm run` calls

BEFORE                         | AFTER
-------------------------------|----------------------
time ./core/build.sh --help    |
real    0m2.116s               | real    0m0.874s
user    0m0.578s               | user    0m0.198s
sys     0m0.984s               | sys     0m0.289s
-------------------------------|----------------------
time ./web/build.sh --help     |
real    0m3.523s               | real    0m0.757s
user    0m1.166s               | user    0m0.320s
sys     0m2.273s               | sys     0m0.455s
-------------------------------|----------------------
time ./web/build.sh -d         |
real    1m34.750s              | real    0m59.974s
user    0m9.721s               | user    0m6.284s
sys     0m19.652s              | sys     0m13.202s

@keymanapp-test-bot skip
2023-03-13 07:18:09 +07:00
Marc Durdin
920f376b64 chore(developer): fix compile errors 2023-03-10 13:23:31 +07:00
Marc Durdin
73a080a949 chore(developer): fix kmcompx compile errors
Some minor errors post-merge.
2023-03-10 13:16:25 +07:00
Marc Durdin
2ad0689090
Merge pull request #8402 from keymanapp/chore/developer/breadth-first-build
chore(developer): kmcmplib breadth-first-build 🚑
2023-03-10 09:24:55 +11:00
Marc Durdin
36c185f5f8
Merge pull request #8398 from keymanapp/chore/core/shared-meson-config
chore(core): shared meson config 🚑
2023-03-10 09:24:45 +11:00
Marc Durdin
aa9065e7df
Merge pull request #8393 from keymanapp/feat/developer/kmcmplib-wasm-support
feat(developer): adds support for compiling kmcmplib to wasm 🚑
2023-03-09 18:43:57 +11:00
Marc Durdin
fed2d18c89
Merge branch 'feature-kmcompx' into chore/developer/kmcmplib-tidy-up-filesystem-access 2023-03-09 18:43:29 +11:00
Marc Durdin
0291399d13
Merge pull request #8388 from keymanapp/fix/developer/8381-kmx-output-consistency
fix(developer): improve .kmx output consistency for cross-platform 🚑
2023-03-09 18:41:44 +11:00
Marc Durdin
583280c636
Merge pull request #8387 from keymanapp/chore/developer/cross-platform-fixups-for-wasm
chore(developer): cross-platform fixups pre-wasm build of kmcmplib 🚑
2023-03-09 18:41:25 +11:00
Marc Durdin
42e395e0be chore(developer): fix typo 2023-03-09 13:07:33 +07:00
Marc Durdin
bd768b1d0e
Merge pull request #8379 from keymanapp/refactor/developer/8082-xstring-check-for-p
chore(developer): check for *p != NULL and test for p > pStart
2023-03-09 17:00:41 +11:00
Marc Durdin
a0cb9a61be chore(developer): kmcmplib breadth-first-build 2023-03-09 12:57:20 +07:00
Marc Durdin
7a57e2aba0
Merge branch 'feature-kmcompx' into chore/developer/cross-platform-fixups-for-wasm 2023-03-09 16:29:25 +11:00
Marc Durdin
ef80f0f6b5 chore(developer): shared meson config for kmcmplib 2023-03-09 12:14:15 +07:00
Marc Durdin
6a280804b8 chore(developer): fixup build errors 2023-03-09 11:34:14 +07:00
Marc Durdin
0341f554e9
Merge pull request #8367 from keymanapp/chore/developer/kmcmplib-remove-windows.h
chore(developer): remove references to windows.h
2023-03-09 12:27:15 +11:00
Marc Durdin
98ca597320
Merge pull request #8365 from keymanapp/chore/developer/kmcmplib-api-interfaces-and-types
chore(developer): cleanup API interfaces and types for kmcmplib
2023-03-09 12:27:05 +11:00
Marc Durdin
e10606f6c1 feat(developer): adds support for compiling kmcmplib to wasm
Note: unit tests require manual build of keyboards in keyboards repo
using kmcmpdll.dll under Windows, and copying into the tests/fixtures
folder, prior to run, under non-Windows platforms.

(Later: will make it possible to build the reference keyboards using
kmcomp.exe on Windows.)
2023-03-09 07:20:50 +07:00
Marc Durdin
2ce959aee5 chore(developer): fixup header 2023-03-09 07:20:26 +07:00
Marc Durdin
ad0ce5e5b8 chore(developer): avoid symbol collision 2023-03-09 07:04:55 +07:00
Marc Durdin
5d52932e1c chore(developer): further filesystem cleanup in kmcmplib
* fixes CheckFilenameConsistency to use Windows functions on Windows,
  to check case differences, and only test for file existence on other
  platforms which are already case sensitive.
* fixes memory leaks in usage of `wstrtostr2`, and eliminated the
  function altogether.
* avoided use of u16sprintf for error messages, as it seems not to be
  working correctly (long term, eliminate altogether, use C++ string
  formatting).
* fix memory leak and overwrite of token in compiler error message.
* remove debug logging and namespace from filesystem.cpp

Unrelated to kmcmplib:
* improved logs in kmcomp tests (these tests are running on kmcmplib),
  so it is easier to diagnose failing tests.
2023-03-09 05:39:39 +07:00
SabineSIL
30f0f0b87a
Update developer/src/kmcmplib/src/xstring.cpp
Co-authored-by: Marc Durdin <marc@durdin.net>
2023-03-08 10:54:10 +01:00
SabineSIL
66e4bde0d3
Update developer/src/kmcmplib/src/xstring.cpp
Co-authored-by: Marc Durdin <marc@durdin.net>
2023-03-08 10:50:28 +01:00
SabineSIL
b27189fb21
Update developer/src/kmcmplib/src/xstring.cpp
Co-authored-by: Marc Durdin <marc@durdin.net>
2023-03-08 10:49:39 +01:00
Marc Durdin
9cb58e9030 chore(developer): add filesystem.h ref 2023-03-08 15:43:10 +07:00
Marc Durdin
8277b6b38f chore(developer): tidy up kmcmplib filesystem access
Moves filesystem functionality into filesystem.cpp (it was partially
in kmx_u16.h previously), and adds cross-platform switches. This brings
us most of the way towards being able to run kmcompx under WASM and in
theory other platforms (yet to be tested).
2023-03-08 15:42:16 +07:00
Marc Durdin
3758aa261e chore(developer): remove filesystem.h ref 2023-03-08 15:41:38 +07:00
Marc Durdin
462ebb0e88
chore: remove filesystem.h ref 2023-03-08 19:40:25 +11:00
Marc Durdin
e36c0085b0 fix(developer): improve .kmx output consistency for cross-platform
This fixes two issues:

1. `COMP_KEY` structure had padding that was not always zeroed out.
   Made this explicit.

2. Rule sorting could be inconsistent when re-sorting rules that
   use `+ any() > ...`, which are expanded at compile time into multiple
   rules, and which ended up with identical sort keys due to lack of
   precision. This relates to #8381 but only adds differentiation for
   the otherwise ambiguous rule sort keys, and does not fix that issue,
   which requires further investigation.
2023-03-08 13:53:29 +07:00
Marc Durdin
e52e7731ad chore(developer): cross-platform fixups pre-wasm build of kmcmplib
This is not enough for building to WASM, but wanted to split out the
bigger changes into their own PRs. This is mostly busy-work.

One serious bug fixed:
* u16string_from_string was not converting from UTF-16 correctly

Apart from that, just tidies up a few bits and pieces in kmcmplib:
* type coercion for json-validator.cpp (probably already fixed upstream)
* cleanup of build scripts for new builder variable names
* various compatibility macros for MSVC vs clang
* safer math expressions
* file name casing in headers
* replacement of various ms-only std funcs
* removed some unused variables and consts
* tightened up search for keyboards to get only keyboards in /source/
  folders (may be possible to improve further in the future?)
2023-03-08 13:49:06 +07:00
Sabine
5ef2c42694 Merge remote-tracking branch 'origin/feature-kmcompx' into refactor/developer/8086-common-includes 2023-03-07 16:27:25 +01:00
Sabine
2b19fecce5 chore(developer): use \n as line endings (instead of \r\n) 2023-03-07 16:08:02 +01:00
Sabine
349d970a39 chore(developer): undo previous change in Readline 2023-03-07 16:08:02 +01:00
Sabine
9426204e87 chore(developer): check for *p != NULL and test for p > pStart 2023-03-07 15:57:35 +01:00
Marc Durdin
6067748221 chore(developer): additional fixes 2023-03-04 05:41:35 +07:00
Marc Durdin
a86b52d50f chore(developer): remove references to windows.h
This removes the remaining references to windows.h and windows types and
macros from kmcmplib.

A few TODO items have been added, mostly relating to shared code or
fixed buffer sizes.

Compiler version is now sourced from keymanversion.h.
2023-03-03 16:37:10 +07:00
Marc Durdin
5ca59bfd1e chore(developer): cleanup API interfaces and types for kmcmplib
Introduces kmcmplibapi.h which declares all external functions and types
for kmcmplib, and updates kmcmplib and kmcmpdll to use these
declarations consistently.

Note that kmcmp_CompileKeyboardToBuffer declares a void* instead of
PFILE_KEYBOARD, because this is a large and complex type defined in both
kmcmpdll and kmcmplib. In the future, when kmcmpdll existing legacy
compiler is removed, we can make the kmcmplib type more public.
2023-03-03 13:21:17 +07:00
Marc Durdin
d3782228d2 chore(developer): kmcmplib - rename kmcmpdll.h to reduce confusion 2023-03-03 10:20:16 +07:00
Marc Durdin
f3310ab081 chore(developer): remove unused version library reference 2023-03-03 09:17:41 +07:00
Marc Durdin
882aedc575 refactor(developer): kmcmplib json-validation.cpp remove windowsisms 2023-03-03 09:13:07 +07:00
Sabine
750eb6b96c chore(developer): CheckFilenameConsistency/CHINT_FilenameHasDifferingCase, rename new functions 2023-03-02 13:55:25 +01:00
Marc Durdin
8c22e6269e chore(developer): cleanup kmcompx build scripts per recent builder changes 2023-03-02 14:10:48 +07:00
Marc Durdin
eac90588dc
Merge pull request #8336 from keymanapp/feat/developer/kmcmplib-feature-flag-tike
feat(developer): add 'Use Legacy Compiler' option to TIKE 🚑
2023-03-02 17:59:55 +11:00
Marc Durdin
dbd296f761
Merge pull request #8335 from keymanapp/feat/developer/kmcmplib-feature-flag-kmcomp
feat(developer): add `-use-legacy-compiler` flag to kmcomp 🚑
2023-03-02 17:59:47 +11:00
Marc Durdin
1790ad36a3
Merge branch 'feature-kmcompx' into feat/developer/kmcmplib-feature-flag-kmcomp 2023-03-02 16:40:39 +11:00