head 1.5; access; symbols pkgsrc-2022Q4:1.4.0.56 pkgsrc-2022Q4-base:1.4 pkgsrc-2022Q3:1.4.0.54 pkgsrc-2022Q3-base:1.4 pkgsrc-2022Q2:1.4.0.52 pkgsrc-2022Q2-base:1.4 pkgsrc-2022Q1:1.4.0.50 pkgsrc-2022Q1-base:1.4 pkgsrc-2021Q4:1.4.0.48 pkgsrc-2021Q4-base:1.4 pkgsrc-2021Q3:1.4.0.46 pkgsrc-2021Q3-base:1.4 pkgsrc-2021Q2:1.4.0.44 pkgsrc-2021Q2-base:1.4 pkgsrc-2021Q1:1.4.0.42 pkgsrc-2021Q1-base:1.4 pkgsrc-2020Q4:1.4.0.40 pkgsrc-2020Q4-base:1.4 pkgsrc-2020Q3:1.4.0.38 pkgsrc-2020Q3-base:1.4 pkgsrc-2020Q2:1.4.0.34 pkgsrc-2020Q2-base:1.4 pkgsrc-2020Q1:1.4.0.14 pkgsrc-2020Q1-base:1.4 pkgsrc-2019Q4:1.4.0.36 pkgsrc-2019Q4-base:1.4 pkgsrc-2019Q3:1.4.0.32 pkgsrc-2019Q3-base:1.4 pkgsrc-2019Q2:1.4.0.30 pkgsrc-2019Q2-base:1.4 pkgsrc-2019Q1:1.4.0.28 pkgsrc-2019Q1-base:1.4 pkgsrc-2018Q4:1.4.0.26 pkgsrc-2018Q4-base:1.4 pkgsrc-2018Q3:1.4.0.24 pkgsrc-2018Q3-base:1.4 pkgsrc-2018Q2:1.4.0.22 pkgsrc-2018Q2-base:1.4 pkgsrc-2018Q1:1.4.0.20 pkgsrc-2018Q1-base:1.4 pkgsrc-2017Q4:1.4.0.18 pkgsrc-2017Q4-base:1.4 pkgsrc-2017Q3:1.4.0.16 pkgsrc-2017Q3-base:1.4 pkgsrc-2017Q2:1.4.0.12 pkgsrc-2017Q2-base:1.4 pkgsrc-2017Q1:1.4.0.10 pkgsrc-2017Q1-base:1.4 pkgsrc-2016Q4:1.4.0.8 pkgsrc-2016Q4-base:1.4 pkgsrc-2016Q3:1.4.0.6 pkgsrc-2016Q3-base:1.4 pkgsrc-2016Q2:1.4.0.4 pkgsrc-2016Q2-base:1.4 pkgsrc-2016Q1:1.4.0.2 pkgsrc-2016Q1-base:1.4 pkgsrc-2015Q4:1.3.0.12 pkgsrc-2015Q4-base:1.3 pkgsrc-2015Q3:1.3.0.10 pkgsrc-2015Q3-base:1.3 pkgsrc-2015Q2:1.3.0.8 pkgsrc-2015Q2-base:1.3 pkgsrc-2015Q1:1.3.0.6 pkgsrc-2015Q1-base:1.3 pkgsrc-2014Q4:1.3.0.4 pkgsrc-2014Q4-base:1.3 pkgsrc-2014Q3:1.3.0.2 pkgsrc-2014Q3-base:1.3 pkgsrc-2014Q2:1.2.0.6 pkgsrc-2014Q2-base:1.2 pkgsrc-2014Q1:1.2.0.4 pkgsrc-2014Q1-base:1.2 pkgsrc-2013Q4:1.2.0.2 pkgsrc-2013Q4-base:1.2 pkgsrc-2013Q3:1.1.0.14 pkgsrc-2013Q3-base:1.1 pkgsrc-2013Q2:1.1.0.12 pkgsrc-2013Q2-base:1.1 pkgsrc-2013Q1:1.1.0.10 pkgsrc-2013Q1-base:1.1 pkgsrc-2012Q4:1.1.0.8 pkgsrc-2012Q4-base:1.1 pkgsrc-2012Q3:1.1.0.6 pkgsrc-2012Q3-base:1.1 pkgsrc-2012Q2:1.1.0.4 pkgsrc-2012Q2-base:1.1 pkgsrc-2012Q1:1.1.0.2 pkgsrc-2012Q1-base:1.1; locks; strict; comment @// @; 1.5 date 2023.03.05.20.19.11; author wiz; state dead; branches; next 1.4; commitid EuxPpOtkJEF2uYfE; 1.4 date 2015.12.29.23.34.54; author dholland; state Exp; branches; next 1.3; commitid J5mAcuIF0darSTOy; 1.3 date 2014.09.13.18.23.38; author asau; state Exp; branches; next 1.2; commitid w2Gctw4wXRJwkdQx; 1.2 date 2013.12.15.18.35.23; author asau; state Exp; branches; next 1.1; commitid 2gHhn60ryctC8ghx; 1.1 date 2012.03.22.20.48.45; author asau; state Exp; branches; next ; desc @@ 1.5 log @polyml: update to 5.9. Provided by Pete Padilla in pkgsrc-wip. Changes: Native code-generator for ARM/64 There is now a native code-generator for the 64-bit ARM architecture. All features of Poly/ML are supported, including FFI and compact-32 bits. It has been tested on a variety of platforms and operating systems including Mac M1, Windows and WSL as well as the Raspberry Pi on Raspbian and even big-endian NetBSD. At the moment the code-generator does no optimisation so the performance should improve in future releases. Position-independent code for X86/64 and ARM64 The code segments in object files created by PolyML.export for X86/64 and ARM64 are now position-independent on Linux and Mac/OS. This is necessary for some platforms and desirable on others. Text relocations are still generated on the X86/32 since changing this would require changes to the code-generator. New bootstrap process The initial build process has been changed to reduce the number of pre-built compilers required. The build process takes longer than before but the final code will be the same. Minor Changes * Additional FFI conversions for size_t, ssize_t, long long, unsigned long long, ptrdiff_t, intptr_t and uintptr_t. * Fix to build problem for 5.8.2 on big-endian. * Fix to underlying sleep function that could fail in BSD. * Fixes for some problems in Unix.execute and Unix.executeInEnv introduced in the changes in 5.8.2. * Fixes for Foreign.LowLevel.cTypeUint and cTypeULong which were incorrectly signed rather than unsigned. * Fix for systems where PTHREAD_STACK_MIN is a function rather than a constant. * Fixes to profiling of live data. * Fixed printing of type functions when the type is passed as an argument to a functor. * Fix to passing struct argument in SysV x86/64. @ text @$NetBSD: patch-libpolyml_elfexport.cpp,v 1.4 2015/12/29 23:34:54 dholland Exp $ Fix build on NetBSD. Fix build on Dragonfly. --- libpolyml/elfexport.cpp.orig 2013-10-15 16:25:39.000000000 +0000 +++ libpolyml/elfexport.cpp @@@@ -65,6 +65,13 @@@@ #ifdef HAVE_SYS_ELF_AMD64_H #include #endif +#if defined(__NetBSD__) && defined(HOSTARCHITECTURE_X86_64) +#include +#endif +#if defined(__DragonFly__) && (defined(HOSTARCHITECTURE_X86) || defined(HOSTARCHITECTURE_X86_64)) +/* Missing definition taken from NetBSD: */ +#define R_386_PC32 2 +#endif // Android has the ARM relocation symbol here #ifdef HAVE_ASM_ELF_H @ 1.4 log @Add patch comments. @ text @d1 1 a1 1 $NetBSD: patch-libpolyml_elfexport.cpp,v 1.3 2014/09/13 18:23:38 asau Exp $ @ 1.3 log @Update to Poly/ML 5.5.2 Most of the changes are bug fixes. One major fix was to the intermediate code optimiser reported back in September. Other changes are the addition of PrettyStringWithWidth and PrettyLineBreak constructors to the PolyML.pretty datatype, Thread.Thread.numPhysicalProcessors to return the number of physical processors and printing ?.t in circumstances where t is bound to a different type. The debugger has been extended to include structures and the arguments to functors. @ text @d1 4 a4 1 $NetBSD$ @ 1.2 log @Update to Poly/ML 5.5.1 Contributed by Imre Vadasz on pkgsrc-users (slightly adapted). Changes in Poly/ML Version 5.5.1 Major New Features and Changes * The intermediate code optimiser has been largely rewritten. The optimiser now detects various additional cases where a closures or tuples can be stored on the stack rather than requiring heap storage * The match compiler that processes a sequence of patterns in a case or fun-binding has been reworked. This now handles complex matches that used to result in a code blow-up * A"polyc" script has been added to aid compiling and linking ML code to produce a stand-alone binary. This is intended as an analogue of cc and gcc. The easiest way to build a binary is now to put the ML code into a file (foo.ML) with a function "main" that is the entry point to the code. Then run polyc -o foo foo.ML The script takes care of any libraries that may be required. It does require that the poly binary and libraries have been installed to the location that was specified in the configure script. * Set the default in the configure script not to build a shared library. This can be overidden with --enable-shared. The advantage of this is that binaries created from Poly/ML, including poly itself, do not require libpolyml at run-time. * Additions and changes to the command-line options when starting the ML top-level + The --eval option can be followed by a string which is compiled and executed before the top-level is entered + The --script option can be used to allow ML code to be run as a script (a "shell script") in Unix. It reads the file name given as the last option, skipping the first line if it begins #!. Implies -q option. Note: because of the way scripts pass their options if used this must be the only option. To use ML as a script put the ML code into a file, put #! /usr/local/bin/poly --script as the first line, modifying the path depending on where poly is installed, and set the file to have execute permission. + The -q option now sets the print depth to zero as well as suppressing the start-up message + The input prompt (> or #) is only produced if the input is a terminal. The -i option should be used to cause the prompt to be produced if, for example, the input is from a pipe. Minor Additions and Changes * The -H option now sets the initial heap size rather than being a synonym for --minheap * Add large file support * When printing the fields a record print them in alphabetical order rather than the system order used in the compiler * Convert the representation of the statistics to use ASN1 encoding. This is byte-order and word-length independent and allows 32-bit Poly/ML to read the statistics of 64-bit Poly/ ML on the same machine and vice-versa. * Add a substructure Exception to the PolyML structure to hold all the functions related to exceptions. * The default for --gc-threads is now the number of independent physical processors. Hyperthreaded cores are counted as single cores rather than dual cores. * Improve the GC and allocation code for very large arrays * Improve handling of OS.Process.system in Cygwin * Improved versions of Word32 and Word64. These are used for SystemWord and LargeWord. Bug Fixes * Fix Word32.fromLargeInt which could return values outside the range of Word32 * Fix segfault in PolyML.stackTrace * Fix errors in conversion of string to real values * Fix segfault when a thread created in foreign code called an ML callback * Fix profiler which could often report UNKNOWN function * Fix bug with overlapped areas in ArraySlice.copy * Fix InternalError exception with ML code where a fixed record type could not be found * Fix bug with equality on BoolVector.vector * Raise the correct exception (Size) for negative lengths in canInput and inputN * Fix Real.fromInt with an argument that was an arbitrary precision number in the long form * Fix error in the timing information printed with PolyML.timing true in Windows. * Fix occasional problem with input/output as a result of the stream token being represented by an immutable value but then being checked for equality * Fix bug in X86-64 code-generator with literal constants that do not fit in 32-bits. It could result in an "InternalError: gen32s: invalid word" exception. Includes regression test. * Fix LargWord.fromInt which was wrong for large negative values * Fix bug in power-of-two function in code-generator. This caused an infinite loop with Word.* when multiplying by a constant with the highest bit set and not a power of two. * Fix bug in structure matching code * Use ELF_Rela relocation structures for all relocations in X86-64. Some systems e.g. Solaris require this. @ text @d3 1 a3 1 --- libpolyml/elfexport.cpp.orig 2013-06-11 11:13:52.000000000 +0000 d16 3 a18 3 #ifdef HAVE_STRING_H #include #endif @ 1.1 log @Update to Poly/ML 5.4.1 Changes in Poly/ML Version 5.4 Major New Features * Major rewrite of the X86 code-generator and combining the 32 and 64-bit versions into a single module. It now supports the floating point instructions. * Changes to the way functions with polymorphic equality are handled to eliminate the "structural equality" code. * Uses the GMP library if that is available when Poly/ML is built otherwise falls back to the old Poly/ML code. Minor Additions and Changes * Added a SingleAssignment structure * Support for the Itanium processor using the interpreted version. * Various bug fixes. @ text @d3 1 a3 1 --- libpolyml/elfexport.cpp.orig 2010-04-14 22:13:42.000000000 +0000 d5 3 a7 3 @@@@ -62,6 +62,13 @@@@ #ifdef HAVE_SYS_ELF_386_H #include @