summaryrefslogtreecommitdiff
path: root/lang/nim
diff options
context:
space:
mode:
authornikita <nikita@pkgsrc.org>2020-08-09 22:11:29 +0000
committernikita <nikita@pkgsrc.org>2020-08-09 22:11:29 +0000
commit9b719426979a5b73cf9f33a02201ac7643e50a72 (patch)
tree2b3ec2e34627edc2d7b3c53a4588668cf0c57f7a /lang/nim
parent8c19846d29f5d9e346dd0e32b873e8584f03afee (diff)
downloadpkgsrc-9b719426979a5b73cf9f33a02201ac7643e50a72.tar.gz
nim: Update to 1.2.6
Changelog extracted from the unspecific changelog.md on the 1.2.6 tag. Unable to get a Changelog diff for 1.2.4 and 1.2.6. # v1.4.0 - yyyy-mm-dd ## Standard library additions and changes For `net` and `nativesockets`, an `inheritable` flag has been added to all `proc`s that create sockets, allowing the user to control whether the resulting socket is inheritable. This flag is provided to ease the writing of multi-process servers, where sockets inheritance is desired. For a transistion period, define `nimInheritHandles` to enable file handle inheritance by default. This flag does **not** affect the `selectors` module due to the differing semantics between operating systems. `system.setInheritable` and `nativesockets.setInheritable` is also introduced for setting file handle or socket inheritance. Not all platform have these `proc`s defined. - The file descriptors created for internal bookkeeping by `ioselector_kqueue` and `ioselector_epoll` will no longer be leaked to child processes. - `strutils.formatFloat` with `precision = 0` has been restored to the version 1 behaviour that produces a trailing dot, e.g. `formatFloat(3.14159, precision = 0)` is now `3.`, not `3`. - `critbits` adds `commonPrefixLen`. - `relativePath(rel, abs)` and `relativePath(abs, rel)` used to silently give wrong results (see #13222); instead they now use `getCurrentDir` to resolve those cases, and this can now throw in edge cases where `getCurrentDir` throws. `relativePath` also now works for js with `-d:nodejs`. - JavaScript and NimScript standard library changes: `streams.StringStream` is now supported in JavaScript, with the limitation that any buffer `pointer`s used must be castable to `ptr string`, any incompatible pointer type will not work. The `lexbase` and `streams` modules used to fail to compile on NimScript due to a bug, but this has been fixed. The following modules now compile on both JS and NimScript: `parsecsv`, `parsecfg`, `parsesql`, `xmlparser`, `htmlparser` and `ropes`. Additionally supported for JS is `cstrutils.startsWith` and `cstrutils.endsWith`, for NimScript: `json`, `parsejson`, `strtabs` and `unidecode`. - Added `streams.readStr` and `streams.peekStr` overloads to accept an existing string to modify, which avoids memory allocations, similar to `streams.readLine` (#13857). - Added high-level `asyncnet.sendTo` and `asyncnet.recvFrom`. UDP functionality. - `paramCount` & `paramStr` are now defined in os.nim instead of nimscript.nim for nimscript/nimble. - `dollars.$` now works for unsigned ints with `nim js` - Improvements to the `bitops` module, including bitslices, non-mutating versions of the original masking functions, `mask`/`masked`, and varargs support for `bitand`, `bitor`, and `bitxor`. - `sugar.=>` and `sugar.->` changes: Previously `(x, y: int)` was transformed into `(x: auto, y: int)`, it now becomes `(x: int, y: int)` in consistency with regular proc definitions (although you cannot use semicolons). Pragmas and using a name are now allowed on the lefthand side of `=>`. Here is an aggregate example of these changes: ```nim import sugar foo(x, y: int) {.noSideEffect.} => x + y # is transformed into proc foo(x: int, y: int): auto {.noSideEffect.} = x + y ``` - The fields of `times.DateTime` are now private, and are accessed with getters and deprecated setters. - The `times` module now handles the default value for `DateTime` more consistently. Most procs raise an assertion error when given an uninitialized `DateTime`, the exceptions are `==` and `$` (which returns `"Uninitialized DateTime"`). The proc `times.isInitialized` has been added which can be used to check if a `DateTime` has been initialized. - Fix a bug where calling `close` on io streams in osproc.startProcess was a noop and led to hangs if a process had both reads from stdin and writes (eg to stdout). - The callback that is passed to `system.onThreadDestruction` must now be `.raises: []`. - The callback that is assigned to `system.onUnhandledException` must now be `.gcsafe`. - `osproc.execCmdEx` now takes an optional `input` for stdin, `workingDir` and `env` parameters. - Added a `ssl_config` module containing lists of secure ciphers as recommended by [Mozilla OpSec](https://wiki.mozilla.org/Security/Server_Side_TLS) - `net.newContext` now defaults to the list of ciphers targeting ["Intermediate compatibility"](https://wiki.mozilla.org/Security/Server_Side_TLS#Intermediate_compatibility_.28recommended.29) per Mozilla's recommendation instead of `ALL`. This change should protect users from the use of weak and insecure ciphers while still provides adequate compatibility with the majority of the Internet. - A new module `std/jsonutils` with hookable `jsonTo,toJson,fromJson` operations for json serialization/deserialization of custom types was added. - A new proc `heapqueue.find[T](heap: HeapQueue[T], x: T): int` to get index of element ``x`` was added. - Added `rstgen.rstToLatex` convenience proc for `renderRstToOut` and `initRstGenerator` with `outLatex` output. - Added `os.normalizeExe`, e.g.: `koch` => `./koch`. - `macros.newLit` now preserves named vs unnamed tuples; use `-d:nimHasWorkaround14720` to keep old behavior. - Added `random.gauss`, that uses the ratio of uniforms method of sampling from a Gaussian distribution. - Added `typetraits.elementType` to get element type of an iterable. - `typetraits.$` changes: `$(int,)` is now `"(int,)"` instead of `"(int)"`; `$tuple[]` is now `"tuple[]"` instead of `"tuple"`; `$((int, float), int)` is now `"((int, float), int)"` instead of `"(tuple of (int, float), int)"` - Added `macros.extractDocCommentsAndRunnables` helper - `strformat.fmt` and `strformat.&` support `= specifier`. `fmt"{expr=}"` now expands to `fmt"expr={expr}"`. - deprecations: `os.existsDir` => `dirExists`, `os.existsFile` => `fileExists` - Added `jsre` module, [Regular Expressions for the JavaScript target.](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions) - Made `maxLines` argument `Positive` in `logging.newRollingFileLogger`, because negative values will result in a new file being created for each logged line which doesn't make sense. - Changed `log` in `logging` to use proper log level on JavaScript target, e.g. `debug` uses `console.debug`, `info` uses `console.info`, `warn` uses `console.warn`, etc. - Tables, HashSets, SharedTables and deques don't require anymore that the passed initial size must be a power of two - this is done internally. Proc `rightSize` for Tables and HashSets is deprecated, as it is not needed anymore. `CountTable.inc` takes `val: int` again not `val: Positive`; I.e. it can "count down" again. - Removed deprecated symbols from `macros` module, deprecated as far back as `0.15`. ## Language changes - In newruntime it is now allowed to assign discriminator field without restrictions as long as case object doesn't have custom destructor. Discriminator value doesn't have to be a constant either. If you have custom destructor for case object and you do want to freely assign discriminator fields, it is recommended to refactor object into 2 objects like this: ```nim type MyObj = object case kind: bool of true: y: ptr UncheckedArray[float] of false: z: seq[int] proc `=destroy`(x: MyObj) = if x.kind and x.y != nil: deallocShared(x.y) x.y = nil ``` Refactor into: ```nim type MySubObj = object val: ptr UncheckedArray[float] MyObj = object case kind: bool of true: y: MySubObj of false: z: seq[int] proc `=destroy`(x: MySubObj) = if x.val != nil: deallocShared(x.val) x.val = nil ```
Diffstat (limited to 'lang/nim')
-rw-r--r--lang/nim/Makefile14
-rw-r--r--lang/nim/PLIST7
-rw-r--r--lang/nim/buildlink3.mk6
-rw-r--r--lang/nim/distinfo10
4 files changed, 20 insertions, 17 deletions
diff --git a/lang/nim/Makefile b/lang/nim/Makefile
index 2755b3c2f25..53291445732 100644
--- a/lang/nim/Makefile
+++ b/lang/nim/Makefile
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.16 2020/06/21 07:43:29 ryoon Exp $
+# $NetBSD: Makefile,v 1.17 2020/08/09 22:11:29 nikita Exp $
-DISTNAME= nim-1.2.2
+DISTNAME= nim-1.2.6
CATEGORIES= lang
MASTER_SITES= http://nim-lang.org/download/
EXTRACT_SUFX= .tar.xz
@@ -25,9 +25,9 @@ do-build:
printf '#! %s\nexec %s _=%s/nim/bin/nim %s/nim/bin/nim "$$@"\n' \
"${SH}" "${SETENV}" "${PREFIX}" "${PREFIX}" \
> ${WRKSRC}/nim-wrapper.sh
- cd ${WRKSRC} && ${PKGSRC_SETENV} ${MAKE_ENV} ./bin/nim c --skipUserCfg --skipParentCfg koch
- cd ${WRKSRC} && ${PKGSRC_SETENV} ${MAKE_ENV} ./koch boot -d:release --skipUserCfg --skipParentCfg
- cd ${WRKSRC} && ${PKGSRC_SETENV} ${MAKE_ENV} ./koch tools --skipUserCfg --skipParentCfg
+ cd ${WRKSRC} && ${PKGSRC_SETENV} ${MAKE_ENV} ./bin/nim c --skipUserCfg --skipParentCfg --parallelBuild:${_MAKE_JOBS_N} koch
+ cd ${WRKSRC} && ${PKGSRC_SETENV} ${MAKE_ENV} ./koch boot --parallelBuild:${_MAKE_JOBS_N} -d:release --skipUserCfg --skipParentCfg
+ cd ${WRKSRC} && ${PKGSRC_SETENV} ${MAKE_ENV} ./koch --stable tools --parallelBuild:${_MAKE_JOBS_N} --skipUserCfg --skipParentCfg
do-install:
cd ${WRKSRC} && sh ./install.sh ${DESTDIR}${PREFIX}
@@ -38,9 +38,11 @@ do-install:
${INSTALL} ${WRKSRC}/bin/nimpretty ${DESTDIR}${PREFIX}/bin/nimpretty
${INSTALL} ${WRKSRC}/bin/nimsuggest ${DESTDIR}${PREFIX}/bin/nimsuggest
${INSTALL} ${WRKSRC}/bin/testament ${DESTDIR}${PREFIX}/bin/testament
+ ${INSTALL} ${WRKSRC}/bin/nim-gdb ${DESTDIR}${PREFIX}/bin/nim-gdb
+ ${INSTALL} ${WRKSRC}/bin/nim-gdb.bash ${DESTDIR}${PREFIX}/bin/nim-gdb.bash
do-test:
cd ${WRKSRC} && ./bin/nim compile koch.nim
- cd ${WRKSRC} && LD_LIBRARY_PATH=${PREFIX}/lib ./koch tests
+ cd ${WRKSRC} && LD_LIBRARY_PATH=${PREFIX}/lib ./koch test --parallelBuild:${_MAKE_JOBS_N}
.include "../../mk/bsd.pkg.mk"
diff --git a/lang/nim/PLIST b/lang/nim/PLIST
index 0c767372699..a4fdbf68e6f 100644
--- a/lang/nim/PLIST
+++ b/lang/nim/PLIST
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.11 2020/06/21 07:43:29 ryoon Exp $
+@comment $NetBSD: PLIST,v 1.12 2020/08/09 22:11:29 nikita Exp $
bin/nim
bin/nimble
bin/nimfind
@@ -6,9 +6,9 @@ bin/nimgrep
bin/nimpretty
bin/nimsuggest
bin/testament
+bin/nim-gdb
+bin/nim-gdb.bash
nim/bin/nim
-nim/bin/nim-gdb
-nim/bin/nim-gdb.bash
nim/compiler.nimble
nim/compiler/aliases.nim
nim/compiler/asciitables.nim
@@ -275,6 +275,7 @@ nim/lib/pure/htmlgen.nim
nim/lib/pure/htmlparser.nim
nim/lib/pure/httpclient.nim
nim/lib/pure/httpcore.nim
+nim/lib/pure/includes/decode_helpers.nim
nim/lib/pure/includes/osenv.nim
nim/lib/pure/includes/oserr.nim
nim/lib/pure/includes/osseps.nim
diff --git a/lang/nim/buildlink3.mk b/lang/nim/buildlink3.mk
index 547d944690a..a97d1ae9115 100644
--- a/lang/nim/buildlink3.mk
+++ b/lang/nim/buildlink3.mk
@@ -1,12 +1,12 @@
-# $NetBSD: buildlink3.mk,v 1.2 2020/06/21 07:43:29 ryoon Exp $
+# $NetBSD: buildlink3.mk,v 1.3 2020/08/09 22:11:29 nikita Exp $
BUILDLINK_TREE+= nim
.if !defined(NIM_BUILDLINK3_MK)
NIM_BUILDLINK3_MK:=
-BUILDLINK_API_DEPENDS.nim= nim>=1.2.0
-BUILDLINK_ABI_DEPENDS.nim?= nim>=1.2.0
+BUILDLINK_API_DEPENDS.nim= nim>=1.2.6
+BUILDLINK_ABI_DEPENDS.nim?= nim>=1.2.6
BUILDLINK_PKGSRCDIR.nim?= ../../lang/nim
.endif # NIM_BUILDLINK3_MK
diff --git a/lang/nim/distinfo b/lang/nim/distinfo
index 88cf6ae4ffd..5ae41c50274 100644
--- a/lang/nim/distinfo
+++ b/lang/nim/distinfo
@@ -1,7 +1,7 @@
-$NetBSD: distinfo,v 1.12 2020/06/21 07:43:29 ryoon Exp $
+$NetBSD: distinfo,v 1.13 2020/08/09 22:11:29 nikita Exp $
-SHA1 (nim-1.2.2.tar.xz) = ffda7d9d9750339e27a20f803a214ca840348034
-RMD160 (nim-1.2.2.tar.xz) = 01202dce1e08cc7cfbccdb6b405b4e09eb0a3d5d
-SHA512 (nim-1.2.2.tar.xz) = 95f7b03a091113382298d438d27641cf612fc187a29bda66c3b88a4b6d29f5c20a33dd22c63cbd402f4ccd921bf05fbd144a8bea9c6155ab865b4b5d14b93a13
-Size (nim-1.2.2.tar.xz) = 5680316 bytes
+SHA1 (nim-1.2.6.tar.xz) = 1f8718eda5a6a6954e3f5c791b1f36e9a6e19bba
+RMD160 (nim-1.2.6.tar.xz) = a09d358db1a1febb6324f06caaa693706d680a26
+SHA512 (nim-1.2.6.tar.xz) = ef59bbb0d4b05bd13624ea7da7182f1d73ffb31c7b34f5928b7e0411809fd70d1898fba9bb02441dc9ce802cd8accaf59448aef5b457e64de73c2ffbbcd53fbc
+Size (nim-1.2.6.tar.xz) = 5688752 bytes
SHA1 (patch-bin_nim-gdb) = 0d4e9ae4cc8687ca7821891b63808fa1d175069c