Skip to content

Commit a858c0b

Browse files
authored
Merge branch 'devel' into safeoptions
2 parents 070847c + 33ed8f7 commit a858c0b

File tree

8 files changed

+228
-151
lines changed

8 files changed

+228
-151
lines changed

changelog.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@
4040
- ``proc `-`*(a, b: Time): int64`` in the ``times`` module has changed return type
4141
to ``times.Duration`` in order to support higher time resolutions.
4242
The proc is no longer deprecated.
43+
44+
- The ``times.Timezone`` is now an immutable ref-type that must be initialized
45+
with an explicit constructor (``newTimezone``).
46+
4347
- ``posix.Timeval.tv_sec`` has changed type to ``posix.Time``.
4448

4549
- ``math.`mod` `` for floats now behaves the same as ``mod`` for integers
@@ -236,4 +240,11 @@
236240
- On Posix systems the global system wide configuration is now put under ``/etc/nim/nim.cfg``,
237241
it used to be ``/etc/nim.cfg``. Usually it does not exist, however.
238242

243+
- On Posix systems the user configuration is now looked under ``$XDG_CONFIG_HOME/nim/nim.cfg``
244+
(if ``XDG_CONFIG_HOME`` is not defined, then under ``~/.config/nim/nim.cfg``). It used to be
245+
``$XDG_CONFIG_DIR/nim.cfg`` (and ``~/.config/nim.cfg``).
246+
247+
Similarly, on Windows, the user configuration is now looked under ``%APPDATA%/nim/nim.cfg``.
248+
This used to be ``%APPDATA%/nim.cfg``.
249+
239250
### Bugfixes

compiler/nimconf.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ proc readConfigFile(
220220
return true
221221

222222
proc getUserConfigPath(filename: string): string =
223-
result = joinPath(getConfigDir(), filename)
223+
result = joinPath([getConfigDir(), "nim", filename])
224224

225225
proc getSystemConfigPath(conf: ConfigRef; filename: string): string =
226226
# try standard configuration file (installation did not distribute files

compiler/scriptconfig.nim

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,11 @@ proc runNimScript*(cache: IdentCache; scriptName: string;
159159

160160
defineSymbol(conf.symbols, "nimscript")
161161
defineSymbol(conf.symbols, "nimconfig")
162-
registerPass(graph, semPass)
163-
registerPass(graph, evalPass)
162+
var registeredPasses {.global.} = false
163+
if not registeredPasses:
164+
registerPass(graph, semPass)
165+
registerPass(graph, evalPass)
166+
registeredPasses = true
164167

165168
conf.searchPaths.add(conf.libpath)
166169

lib/js/jscore.nim

Lines changed: 59 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
#
2+
#
3+
# Nim's Runtime Library
4+
# (c) Copyright 2018 Nim contributors
5+
#
6+
# See the file "copying.txt", included in this
7+
# distribution, for details about the copyright.
8+
#
9+
110
## This module wraps core JavaScript functions.
211
##
312
## Unless your application has very
@@ -19,49 +28,47 @@ var
1928
Date* {.importc, nodecl.}: DateLib
2029
JSON* {.importc, nodecl.}: JsonLib
2130

22-
{.push importcpp.}
23-
2431
# Math library
25-
proc abs*(m: MathLib, a: SomeNumber): SomeNumber
26-
proc acos*(m: MathLib, a: SomeNumber): float
27-
proc acosh*(m: MathLib, a: SomeNumber): float
28-
proc asin*(m: MathLib, a: SomeNumber): float
29-
proc asinh*(m: MathLib, a: SomeNumber): float
30-
proc atan*(m: MathLib, a: SomeNumber): float
31-
proc atan2*(m: MathLib, a: SomeNumber): float
32-
proc atanh*(m: MathLib, a: SomeNumber): float
33-
proc cbrt*(m: MathLib, f: SomeFloat): SomeFloat
34-
proc ceil*(m: MathLib, f: SomeFloat): SomeFloat
35-
proc clz32*(m: MathLib, f: SomeInteger): int
36-
proc cos*(m: MathLib, a: SomeNumber): float
37-
proc cosh*(m: MathLib, a: SomeNumber): float
38-
proc exp*(m: MathLib, a: SomeNumber): float
39-
proc expm1*(m: MathLib, a: SomeNumber): float
40-
proc floor*(m: MathLib, f: SomeFloat): int
41-
proc fround*(m: MathLib, f: SomeFloat): float32
42-
proc hypot*(m: MathLib, args: varargs[distinct SomeNumber]): float
43-
proc imul*(m: MathLib, a, b: int32): int32
44-
proc log*(m: MathLib, a: SomeNumber): float
45-
proc log10*(m: MathLib, a: SomeNumber): float
46-
proc log1p*(m: MathLib, a: SomeNumber): float
47-
proc log2*(m: MathLib, a: SomeNumber): float
48-
proc max*(m: MathLib, a, b: SomeNumber): SomeNumber
49-
proc min*[T: SomeNumber | JsRoot](m: MathLib, a, b: T): T
50-
proc pow*(m: MathLib, a, b: distinct SomeNumber): float
51-
proc random*(m: MathLib): float
52-
proc round*(m: MathLib, f: SomeFloat): int
53-
proc sign*(m: MathLib, f: SomeNumber): int
54-
proc sin*(m: MathLib, a: SomeNumber): float
55-
proc sinh*(m: MathLib, a: SomeNumber): float
56-
proc sqrt*(m: MathLib, f: SomeFloat): SomeFloat
57-
proc tan*(m: MathLib, a: SomeNumber): float
58-
proc tanh*(m: MathLib, a: SomeNumber): float
59-
proc trunc*(m: MathLib, f: SomeFloat): int
32+
proc abs*(m: MathLib, a: SomeNumber): SomeNumber {.importcpp.}
33+
proc acos*(m: MathLib, a: SomeNumber): float {.importcpp.}
34+
proc acosh*(m: MathLib, a: SomeNumber): float {.importcpp.}
35+
proc asin*(m: MathLib, a: SomeNumber): float {.importcpp.}
36+
proc asinh*(m: MathLib, a: SomeNumber): float {.importcpp.}
37+
proc atan*(m: MathLib, a: SomeNumber): float {.importcpp.}
38+
proc atan2*(m: MathLib, a: SomeNumber): float {.importcpp.}
39+
proc atanh*(m: MathLib, a: SomeNumber): float {.importcpp.}
40+
proc cbrt*(m: MathLib, f: SomeFloat): SomeFloat {.importcpp.}
41+
proc ceil*(m: MathLib, f: SomeFloat): SomeFloat {.importcpp.}
42+
proc clz32*(m: MathLib, f: SomeInteger): int {.importcpp.}
43+
proc cos*(m: MathLib, a: SomeNumber): float {.importcpp.}
44+
proc cosh*(m: MathLib, a: SomeNumber): float {.importcpp.}
45+
proc exp*(m: MathLib, a: SomeNumber): float {.importcpp.}
46+
proc expm1*(m: MathLib, a: SomeNumber): float {.importcpp.}
47+
proc floor*(m: MathLib, f: SomeFloat): int {.importcpp.}
48+
proc fround*(m: MathLib, f: SomeFloat): float32 {.importcpp.}
49+
proc hypot*(m: MathLib, args: varargs[distinct SomeNumber]): float {.importcpp.}
50+
proc imul*(m: MathLib, a, b: int32): int32 {.importcpp.}
51+
proc log*(m: MathLib, a: SomeNumber): float {.importcpp.}
52+
proc log10*(m: MathLib, a: SomeNumber): float {.importcpp.}
53+
proc log1p*(m: MathLib, a: SomeNumber): float {.importcpp.}
54+
proc log2*(m: MathLib, a: SomeNumber): float {.importcpp.}
55+
proc max*(m: MathLib, a, b: SomeNumber): SomeNumber {.importcpp.}
56+
proc min*[T: SomeNumber | JsRoot](m: MathLib, a, b: T): T {.importcpp.}
57+
proc pow*(m: MathLib, a, b: distinct SomeNumber): float {.importcpp.}
58+
proc random*(m: MathLib): float {.importcpp.}
59+
proc round*(m: MathLib, f: SomeFloat): int {.importcpp.}
60+
proc sign*(m: MathLib, f: SomeNumber): int {.importcpp.}
61+
proc sin*(m: MathLib, a: SomeNumber): float {.importcpp.}
62+
proc sinh*(m: MathLib, a: SomeNumber): float {.importcpp.}
63+
proc sqrt*(m: MathLib, f: SomeFloat): SomeFloat {.importcpp.}
64+
proc tan*(m: MathLib, a: SomeNumber): float {.importcpp.}
65+
proc tanh*(m: MathLib, a: SomeNumber): float {.importcpp.}
66+
proc trunc*(m: MathLib, f: SomeFloat): int {.importcpp.}
6067
6168
# Date library
62-
proc now*(d: DateLib): int
63-
proc UTC*(d: DateLib): int
64-
proc parse*(d: DateLib, s: cstring): int
69+
proc now*(d: DateLib): int {.importcpp.}
70+
proc UTC*(d: DateLib): int {.importcpp.}
71+
proc parse*(d: DateLib, s: cstring): int {.importcpp.}
6572
6673
proc newDate*(): DateTime {.
6774
importcpp: "new Date()".}
@@ -73,19 +80,17 @@ proc newDate*(year, month, day, hours, minutes,
7380
seconds, milliseconds: int): DateTime {.
7481
importcpp: "new Date(#,#,#,#,#,#,#)".}
7582
76-
proc getDay*(d: DateTime): int
77-
proc getFullYear*(d: DateTime): int
78-
proc getHours*(d: DateTime): int
79-
proc getMilliseconds*(d: DateTime): int
80-
proc getMinutes*(d: DateTime): int
81-
proc getMonth*(d: DateTime): int
82-
proc getSeconds*(d: DateTime): int
83-
proc getYear*(d: DateTime): int
84-
proc getTime*(d: DateTime): int
85-
proc toString*(d: DateTime): cstring
83+
proc getDay*(d: DateTime): int {.importcpp.}
84+
proc getFullYear*(d: DateTime): int {.importcpp.}
85+
proc getHours*(d: DateTime): int {.importcpp.}
86+
proc getMilliseconds*(d: DateTime): int {.importcpp.}
87+
proc getMinutes*(d: DateTime): int {.importcpp.}
88+
proc getMonth*(d: DateTime): int {.importcpp.}
89+
proc getSeconds*(d: DateTime): int {.importcpp.}
90+
proc getYear*(d: DateTime): int {.importcpp.}
91+
proc getTime*(d: DateTime): int {.importcpp.}
92+
proc toString*(d: DateTime): cstring {.importcpp.}
8693
8794
#JSON library
88-
proc stringify*(l: JsonLib, s: JsRoot): cstring
89-
proc parse*(l: JsonLib, s: cstring): JsRoot
90-
91-
{.pop.}
95+
proc stringify*(l: JsonLib, s: JsRoot): cstring {.importcpp.}
96+
proc parse*(l: JsonLib, s: cstring): JsRoot {.importcpp.}

lib/pure/ospaths.nim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -525,14 +525,14 @@ proc getConfigDir*(): string {.rtl, extern: "nos$1",
525525
## Returns the config directory of the current user for applications.
526526
##
527527
## On non-Windows OSs, this proc conforms to the XDG Base Directory
528-
## spec. Thus, this proc returns the value of the XDG_CONFIG_DIR environment
528+
## spec. Thus, this proc returns the value of the XDG_CONFIG_HOME environment
529529
## variable if it is set, and returns the default configuration directory,
530530
## "~/.config/", otherwise.
531531
##
532532
## An OS-dependent trailing slash is always present at the end of the
533533
## returned string; `\\` on Windows and `/` on all other OSs.
534534
when defined(windows): return string(getEnv("APPDATA")) & "\\"
535-
elif getEnv("XDG_CONFIG_DIR"): return string(getEnv("XDG_CONFIG_DIR")) & "/"
535+
elif getEnv("XDG_CONFIG_HOME"): return string(getEnv("XDG_CONFIG_HOME")) & "/"
536536
else: return string(getEnv("HOME")) & "/.config/"
537537

538538
proc getTempDir*(): string {.rtl, extern: "nos$1",

0 commit comments

Comments
 (0)