-
-
Notifications
You must be signed in to change notification settings - Fork 33.8k
Make full-icu the default #29522
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make full-icu the default #29522
Conversation
|
please try it out |
|
Also tried this, it works :). cc @mathiasbynens const f1 = new Intl.NumberFormat('fr');
f1.format(12345678901234567890n);
const formatter = new Intl.NumberFormat('en', {
style: 'unit',
unit: 'kilobyte',
});
const t = formatter.format(1.234);
console.log(t); |
|
Should this labeled as |
|
0a471af to
7725d01
Compare
|
should it really be semver minor or major? It doesn't break anything… |
|
One may ask, "what about I will tell you.
The install returns successfully because postinstall exits with status
|
|
AIX failed,
I probably need to upgrade the genccode usage.. I'm guessing that
that's a huge file. Maybe |
|
@nodejs/build-infra is there a way we can get more virtual memory for the AIX build? |
|
Problem: generating a sharedlib or static data (.so/.a/.dll/.lib) from a 25M binary .dat file When I ported the tools, I didn't want to port ICU's dependence on makefiles and generated shell scripts, so I went for a minimal view: always generate an icudt_dat.c file which looks like this: const struct {
double bogus;
uint8_t bytes[27531792];
} icudt64_dat={ 0.0, {
144,0,218,39,20,0,0,0,0,0,2,0,67,109,110,68,
1,0,0,0,3,0,0,0,32,67,111,112,121,114,105,103,
104,116,32,40,67,41,32,50,48,49,54,32,97,110,100,32,…
[zillions of lines omitted]it's a little harsh on a C compiler. somehow. Typically how ICU solved this is:
.globl _bar_dat
.data
.const
.balign 16
_bar_dat:
.long 0x27DA0090,0x14,0x020000,0x446E6D43…The challenge is, there are a lot of assembly formats, even if you arbitrarily and unnecessarily restrict the problem area to only GCC. The assembler is more tied to the OS's loader, etc. Sooo…
|
/pinging IBMers who are active in Build: @mhdawson @sam-github @gireeshpunathil |
|
I'm in the process of trying to get an AIX7.2 machine working in CI. I think it has twice as much memory. Redoing the AIX6.1 machines, though, I'm not sure how to approach that. I'm asking around. To temper expectations, more memory or releases/tests being done on AIX7.2 aren't going to happen very fast (sorry, just being honest, some things are slow). |
|
OK an update. This seemed to work on mac. PoC. Need to calculate the value of the probably "generated-file-suffix" (values: .S, .c, ..?) and Docs on the
so,
diff --git a/tools/icu/icu-generic.gyp b/tools/icu/icu-generic.gyp
index b8f0d13836..96930d159c 100644
--- a/tools/icu/icu-generic.gyp
+++ b/tools/icu/icu-generic.gyp
@@ -272,7 +272,7 @@
'conditions': [
[ 'icu_small == "false"', {
# full data - just build the full data file, then we are done.
- 'sources': [ '<(SHARED_INTERMEDIATE_DIR)/icudt<(icu_ver_major)_dat.c' ],
+ 'sources': [ '<(SHARED_INTERMEDIATE_DIR)/icudt<(icu_ver_major)_dat.S' ],
'dependencies': [ 'genccode#host', 'icupkg#host', 'icu_implementation#host', 'icu_uconfig' ],
'include_dirs': [
'<(icu_path)/source/common',
@@ -302,10 +302,11 @@
{
'action_name': 'icudata',
'inputs': [ '<(SHARED_INTERMEDIATE_DIR)/icudt<(icu_ver_major).dat' ],
- 'outputs':[ '<(SHARED_INTERMEDIATE_DIR)/icudt<(icu_ver_major)_dat.c' ],
+ 'outputs':[ '<(SHARED_INTERMEDIATE_DIR)/icudt<(icu_ver_major)_dat.S' ],
'action': [ '<(PRODUCT_DIR)/genccode',
'-e', 'icudt<(icu_ver_major)',
'-d', '<(SHARED_INTERMEDIATE_DIR)',
+ '-a', 'gcc-darwin',
'-f', 'icudt<(icu_ver_major)_dat',
'<@(_inputs)' ],
}, |
It should be semver major because it can change the result of function calls that rely on ICU. For example, this code: const fmt = new Intl.NumberFormat('en-CA', {style: 'currency', currency: 'USD'});
console.log(fmt.format(10.32));currently outputs: but with full-icu, the output will change to: |
|
Should our last nightly builds contain full ICU already? I've tried the last Windows build as of 2019.10.08:
> process.versions
{
node: '13.0.0-nightly20191008064e111515',
v8: '7.8.279.14-node.13',
uv: '1.32.0',
zlib: '1.2.11',
brotli: '1.0.7',
ares: '1.15.0',
modules: '79',
nghttp2: '1.39.2',
napi: '5',
llhttp: '1.1.4',
openssl: '1.1.1d',
cldr: '35.1',
icu: '64.2',
tz: '2019a',
unicode: '12.1'
}
> const january = new Date(9e8);
undefined
> const spanish = new Intl.DateTimeFormat('es', { month: 'long' });
undefined
> spanish.format(january);
'M01'
> spanish.format(january) === 'enero';
false |
Seems too small. Can you send/point me to the build log? |
|
I think I can see what the problem is. PR incoming. |
|
The problem is that the release build is configured with |
|
PR: #29887 |
Fixes: #19214
Contains tooling, and data for ICU 64
Checklist
make -j4 test(UNIX), orvcbuild test(Windows) passesHistorical note: yes, this is a reversal of nodejs/node-v0.x-archive#6371 (comment) (7 May 2014) for node v0.12. FYI @tjfontaine and @trevnorris !