You can subscribe to this list here.
| 2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(23) |
Nov
(29) |
Dec
(21) |
| 2007 |
Jan
(48) |
Feb
(9) |
Mar
(49) |
Apr
(49) |
May
(33) |
Jun
(28) |
Jul
(34) |
Aug
(51) |
Sep
(52) |
Oct
(26) |
Nov
(15) |
Dec
(26) |
| 2008 |
Jan
(21) |
Feb
(22) |
Mar
(19) |
Apr
(35) |
May
(23) |
Jun
(62) |
Jul
(11) |
Aug
(20) |
Sep
(35) |
Oct
(46) |
Nov
(22) |
Dec
(3) |
| 2009 |
Jan
(45) |
Feb
(59) |
Mar
(24) |
Apr
(19) |
May
(10) |
Jun
(17) |
Jul
(16) |
Aug
(30) |
Sep
(41) |
Oct
(55) |
Nov
(37) |
Dec
(18) |
| 2010 |
Jan
(13) |
Feb
(103) |
Mar
(64) |
Apr
(134) |
May
(35) |
Jun
(47) |
Jul
(31) |
Aug
(27) |
Sep
(29) |
Oct
(6) |
Nov
(5) |
Dec
(8) |
| 2011 |
Jan
(20) |
Feb
(6) |
Mar
(8) |
Apr
(19) |
May
(36) |
Jun
(23) |
Jul
(10) |
Aug
(14) |
Sep
(54) |
Oct
(15) |
Nov
(29) |
Dec
(19) |
| 2012 |
Jan
(20) |
Feb
(11) |
Mar
(21) |
Apr
(7) |
May
(17) |
Jun
(3) |
Jul
(9) |
Aug
(10) |
Sep
(19) |
Oct
(46) |
Nov
(22) |
Dec
(3) |
| 2013 |
Jan
(6) |
Feb
(27) |
Mar
(9) |
Apr
(13) |
May
(9) |
Jun
(18) |
Jul
(33) |
Aug
(32) |
Sep
(10) |
Oct
(16) |
Nov
(3) |
Dec
(16) |
| 2014 |
Jan
(3) |
Feb
(4) |
Mar
|
Apr
(3) |
May
(5) |
Jun
(4) |
Jul
(1) |
Aug
(13) |
Sep
(9) |
Oct
(5) |
Nov
(12) |
Dec
(39) |
| 2015 |
Jan
(14) |
Feb
(15) |
Mar
(5) |
Apr
(4) |
May
(3) |
Jun
(12) |
Jul
(6) |
Aug
|
Sep
(1) |
Oct
(15) |
Nov
(6) |
Dec
(5) |
| 2016 |
Jan
|
Feb
(11) |
Mar
(17) |
Apr
|
May
(1) |
Jun
(6) |
Jul
(3) |
Aug
(1) |
Sep
(9) |
Oct
|
Nov
(7) |
Dec
|
| 2017 |
Jan
(5) |
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
(6) |
Jul
|
Aug
(3) |
Sep
(6) |
Oct
(2) |
Nov
(1) |
Dec
(1) |
| 2018 |
Jan
(1) |
Feb
(8) |
Mar
|
Apr
(5) |
May
(4) |
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
|
| 2019 |
Jan
(3) |
Feb
(1) |
Mar
|
Apr
(1) |
May
(5) |
Jun
|
Jul
|
Aug
|
Sep
(8) |
Oct
(1) |
Nov
(1) |
Dec
(5) |
| 2020 |
Jan
(1) |
Feb
|
Mar
(3) |
Apr
(6) |
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(4) |
| 2021 |
Jan
|
Feb
(1) |
Mar
|
Apr
(4) |
May
|
Jun
(13) |
Jul
(10) |
Aug
(4) |
Sep
(1) |
Oct
(4) |
Nov
|
Dec
(1) |
| 2022 |
Jan
(1) |
Feb
(4) |
Mar
(1) |
Apr
(3) |
May
|
Jun
(1) |
Jul
(1) |
Aug
|
Sep
(1) |
Oct
(1) |
Nov
(1) |
Dec
(5) |
| 2023 |
Jan
|
Feb
(6) |
Mar
(11) |
Apr
(3) |
May
(1) |
Jun
(1) |
Jul
(1) |
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
| 2024 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
(2) |
Jun
(1) |
Jul
(2) |
Aug
(2) |
Sep
(3) |
Oct
(2) |
Nov
(1) |
Dec
(1) |
| 2025 |
Jan
(2) |
Feb
(1) |
Mar
(1) |
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
(1) |
Sep
(2) |
Oct
(1) |
Nov
(1) |
Dec
|
|
From: Victor M. <ma...@fh...> - 2019-12-15 04:14:50
|
On Samstag, 14. Dezember 2019 02:21:33 CET Joachim Schimpf wrote: > Hello Victor, > > On 13/12/2019 18:46, Victor Mataré wrote: > > I'm making extensive use of the C++ interface, and the aggressive garbage > > collection in eclipse-clp is still giving me trouble. So as I understand > > it, any term goes BAD after it's been given to the eclipse engine once. > > > > Now I already have infrastructure in place to deal with that, but in my > > control flow it's becoming a huge issue that I never really know whether a > > term has gone BAD or not. Is there any way to query whether a certain term > > (handle) has already been garbage collected? > > I'm quite confident that the C++ interface has the functionality to solve > your problem in a clean way, no strange workarounds should be necessary. > > From what you say, I suspect that you may not be using term references > where they are needed. It's not that. I don't need persistent term references because I'm not pulling information out of the eclipse engine. In the part I'm talking about, I'm basically just using compile_term/1 to "compile" a C++ object structure into a bunch of prolog clauses. The problem is that some of those C++ objects represent variables that are referenced in other objects (i.e. they are not singleton variables). So I can't simply re-initialize the variable terms whenever they're referenced because that would make them singletons. I've now resorted to initializing these variable terms once before building a term or clause that has variables, but that is error prone because I didn't expect to have that problem when I designed the control flow. Now that I think of it, some clearer documentation might have helped me in the beginning. There is just this rather vague half-sentence in the Embedding and Interfacing Manual: "terms do not survive the execution of ECLiPSe" None of these words are really clear. What terms are really affected and how, what does "survive" mean and what does "execution" mean? I think the Embedding Manual should have at least a short section about memory management that clearly states what happens. In fact, it should have a big fat warning along these lines: ============================================================================== Every EC_word that has been put into post_goal() is invalid after EC_resume(). That includes all pieces of complex terms. Putting an invalid EC_word into another post_goal() leads to undefined behaviour, which might cause the eclipse engine to corrupt data, crash immediately, crash randomly, or to never crash. ============================================================================== At least that is the behaviour I observed so far when I made mistakes with this. I assume that the undefined behaviour helps performance, but what would also be really useful for debugging these things is a switch that makes it crash immediately. Sure, I can design my client application so that it cannot happen, but I failed to do that initially because there was neither a fat warning nor a fail-fast behavior. It's really a huge pitfall if you're designing a larger application. Hope I did get the problem across ;-) Best regards & thanks for your helpful support, Victor PS: If you look at e.g. SWI Prolog, they expose a GC frame object which makes their (also non-trivial) memory management explicit, controllable and therefore obvious. Lacking that, I believe one does need very clear documentation. |
|
From: Joachim S. <jsc...@co...> - 2019-12-14 01:37:01
|
Hello Victor, On 13/12/2019 18:46, Victor Mataré wrote: > I'm making extensive use of the C++ interface, and the aggressive garbage > collection in eclipse-clp is still giving me trouble. So as I understand it, > any term goes BAD after it's been given to the eclipse engine once. > > Now I already have infrastructure in place to deal with that, but in my > control flow it's becoming a huge issue that I never really know whether a > term has gone BAD or not. Is there any way to query whether a certain term > (handle) has already been garbage collected? I'm quite confident that the C++ interface has the functionality to solve your problem in a clean way, no strange workarounds should be necessary. From what you say, I suspect that you may not be using term references where they are needed. To give some background: "terms" are always stored and managed by an ECLiPSe engine. When an engine runs, it may (a) attempt to garbage-collect terms, and (b) move terms as a side effect of garbage collection. For that reason, the engine must know about any references to terms that you are keeping in your own C++ data structures. The way to do that is to use the EC_ref/EC_refs class: terms assigned to an EC_ref/EC_refs will not be garbage collected, and the references will be correctly relocated when the term is moved in memory. In contrast, the EC_word class must be considered volatile: the content of an EC_word becomes invalid once you pass control to the engine (the reason EC_words exist at all is that they have less overhead, and are good enough to hold subterms temporarily while constructing or deconstructing complex terms). That's my best guess without knowing your code. It would also be helpful to know whether you observe this problem already in ECLiPSe 6.1, or whether it is new in 7.0. Cheers, Joachim |
|
From: Victor M. <ma...@fh...> - 2019-12-13 18:59:59
|
Hi, I'm making extensive use of the C++ interface, and the aggressive garbage collection in eclipse-clp is still giving me trouble. So as I understand it, any term goes BAD after it's been given to the eclipse engine once. Now I already have infrastructure in place to deal with that, but in my control flow it's becoming a huge issue that I never really know whether a term has gone BAD or not. Is there any way to query whether a certain term (handle) has already been garbage collected? Thanks in advance, Victor |
|
From: Paulo M. <pm...@lo...> - 2019-12-03 14:48:55
|
Hi, Logtalk 3.33.0 is now available for downloading at: https://logtalk.org/ This release adds make tool support for detecting duplicated library aliases, fixes silent loading of settings files when used to load libraries and tools, updates the documenting tool to list inherited public predicates in entity API documentation, improves tool documentation, adds new library predicates, includes fixes and improvements for libraries and tools, adds new library tests, adds new multi-threading programming examples, adds an example of using the question-asking mechanism, fixes example issues, and provides updated support for ECLiPSe, SICStus Prolog, SWI-Prolog, XSB, and YAP. For details and a complete list of changes, please consult the release notes at: https://github.com/LogtalkDotOrg/logtalk3/blob/master/RELEASE_NOTES.md Logtalk marketing and sponsoring goals for the current year include: - 200 GitHub starts (currently at 153) - 20 sponsors (currently at 3) Next January, it will make two years of full time development with 19 releases with significant updates, a new website, and a reactivated tech blog. Your support is key for Logtalk success. Counting on you. Happy logtalking! Paulo ----------------------------------------------------------------- Paulo Moura Logtalk developer |
|
From: Paulo M. <pm...@lo...> - 2019-11-01 11:45:57
|
Hi, For the past few weeks, I have been implementing a set of GitHub Actions and Workflows (https://help.github.com/en/github/automating-your-workflow-with-github-actions/about-github-actions) for Logtalk repos, available from: https://github.com/logtalk-actions These necessarily include actions for setting up supported backend Prolog compilers. I currently make available actions for setting up ECLiPSe (https://github.com/logtalk-actions/setup-eclipse), GNU Prolog (https://github.com/logtalk-actions/setup-gnu-prolog), and SWI-Prolog (https://github.com/logtalk-actions/setup-swi-prolog) environments. Also available are some demo repos illustrating the provided workflows (https://github.com/logtalk-actions/workflows). Notably, the "demo" repo (https://github.com/logtalk-actions/demo) shows how to automatically run tests, publish test reports, and regenerate API documentation and diagrams on a push event. The "setup-eclipse" action (https://github.com/logtalk-actions/setup-eclipse) can also be used for repos that don't make use of Logtalk. The community challenge here is twofold: - Get users with open source repos into the habit of writing tests and documentation and then benefit from automatically running those tests and regenerating and publishing documentation every time they commit and push a new version. - Writing and sharing actions and workflows for common usage scenarios. Feedback and contributions welcome. Enjoy! Paulo ----------------------------------------------------------------- Paulo Moura Logtalk developer |
|
From: Paulo M. <pm...@lo...> - 2019-10-15 11:39:58
|
Hi, Logtalk 3.31.0 is now available for downloading at: https://logtalk.org/ This release adds new and improved lint checks for control constructs and built-in predicates, adds support for using "encoding/1" directives in included files, improves support for compiling modules as objects, includes documentation updates and improvements, includes fixes and updates for the "code_metrics" and "lgtunit" tools, includes a port of ToyCHR, updates Textadept editor support, updates the Windows installer to support Chocolatey packages, and provides portability updates for ECLiPSe, GNU Prolog, SICStus Prolog, SWI-Prolog, and YAP. For details and a complete list of changes, please consult the release notes at: https://github.com/LogtalkDotOrg/logtalk3/blob/master/RELEASE_NOTES.md On other news, a new guide about applying Logtalk developer tools to Prolog codebases is now available at: https://logtalk.org/using_tools_with_prolog.html Last but not the least, Logtalk sponsorship is now live. If you visit its repository at GitHub: https://github.com/LogtalkDotOrg/logtalk3 at the top of the page, there's now a "Sponsor" button. Sponsorship tiers start at $2, hopefully allowing anyone to show their love and support for Logtalk. Even better, for the first year, GitHub created a Sponsors Matching Fund, which matches up to $5000 per sponsored developer in their first year of sponsorship! Counting on your to keep Logtalk a sustainable project. Happy logtalking! Paulo ----------------------------------------------------------------- Paulo Moura Logtalk developer |
|
From: Joachim S. <jsc...@co...> - 2019-09-25 20:53:45
|
On 25/09/2019 07:37, bustiakim via ECLiPSe-CLP-Users wrote: > > Hello, > > My Eclipse Clp skills are quite basic as well as my English level. But I have > done a project in which I would like to use the Tcl / Tk environment to enter > data and then transfer it to Eclipse. > > I have been looking at the Embedding and Interfacing Manual with the queues > examples but I cannot move forward. > > My purpose is that every time I need the intervention of the operator be able to > use the Tk graphic environment to capture data, and then to transfer this data > to Eclipse Clp in order to continue the process. > I would also need to transfer data backwards from Eclipse to Tcl / Tk. > > I would appreciate if you could send me a complete code example that runs > correctly so I can learn about the communication and thus get applied to my project. > > Thank you very much in advance. > > Joaquim Torrellas Hi Joaquim, I admit that the Embedding Manual is not the easiest to understand ;) You can find some examples in the lib_tcl directory of your ECLiPSe installation. In addition, I have just uploaded one example showing the kind of queue communication that you are looking for, see http://eclipseclp.org/wiki/Examples/TclTkExamples Cheers, Joachim |
|
From: bustiakim <bus...@ya...> - 2019-09-25 06:58:03
|
Hello,My Eclipse Clp skills are quite basic as well as my English level. But I have done a project in which I would like to use the Tcl / Tk environment to enter data and then transfer it to Eclipse.I have been looking at the Embedding and Interfacing Manual with the queues examples but I cannot move forward.My purpose is that every time I need the intervention of the operator be able to use the Tk graphic environment to capture data, and then to transfer this data to Eclipse Clp in order to continue the process.I would also need to transfer data backwards from Eclipse to Tcl / Tk.I would appreciate if you could send me a complete code example that runs correctly so I can learn about the communication and thus get applied to my project.Thank you very much in advance. Joaquim Torrellas |
|
From: Paulo M. <pm...@lo...> - 2019-09-18 20:10:38
|
Hi, The -mmacosx-version-min=10.5 was indeed the problem. Changing configure to use 10.8 instead resulted in a successful compilation. For reference, I'm running macOS Mojave (10.4.6) with Xcode 10.3: $ gcc -v Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1 Apple LLVM version 10.0.1 (clang-1001.0.46.4) Target: x86_64-apple-darwin18.7.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin Thanks for all the help. Cheers, Paulo > On 18 Sep 2019, at 17:26, Joachim Schimpf <jsc...@co...> wrote: > > On 18/09/2019 15:25, Paulo Moura wrote: >>> >>> Kish-Shens-iMac:text kish$ gcc t.c >>> >>> Kish-Shens-iMac:text kish$ ./a.out >>> >>> sizrof(int)= 4 >> I do get the expected result with this small program: >> $ ./a.out >> sizrof(int)= 4 > > > Well, if > > gcc t.c > > > works fine, and > > gcc -o conftest -m64 -mmacosx-version-min=10.5 \ > -D_REENTRANT -fPIC -fno-strict-overflow -Wno-logical-op-parentheses \ > -Wno-bitwise-op-parentheses -Wno-pointer-sign -m64 \ > -mmacosx-version-min=10.5 conftest.c -lm > ld: library not found for -lgcc_s.10.5 > clang: error: linker command failed with exit code 1 (use -v to see invocation) > > > makes a linker error, then one of these command line arguments causes it. > My guess was the -mmacosx-version-min=10.5, but I can't test it here. > > > Cheers, > Joachim > ----------------------------------------------------------------- Paulo Moura Logtalk developer |
|
From: Paulo M. <pm...@lo...> - 2019-09-18 14:25:52
|
Hi,
Removing the MACOS_VERSION_MIN=10.5 lines in configure makes no difference. Int size is still reported as zero.
> On 18 Sep 2019, at 14:25, Kish Shen <kis...@gm...> wrote:
>
> Hi Paulo,
>
> it looks like there is a problem with your clang's sizeof test. Try
> compiling and running the following:
>
> #include <stdio.h>
> int main() {
> int i = sizeof(int);
> printf("sizrof(int)= %i\n", i);
>
> }
>
> compile and run the file:
>
> Kish-Shens-iMac:text kish$ gcc t.c
>
> Kish-Shens-iMac:text kish$ ./a.out
>
> sizrof(int)= 4
I do get the expected result with this small program:
$ ./a.out
sizrof(int)= 4
> Your messages suggest you will get 0 instead of 4 for this. If this is
> the case, there is a serious problem with your version of clang, but I
> could not find any mention of this problem with a quick web search.
I have also been able to find any help searching the web so far.
> If you get something other than 0 or 4, this would imply that clang or
> Apple changed the size of int.
Not the case here.
> I think ECLiPSe itself can cope with
> this (it should only need a word size integer type), but apparently
> GMP does not.
>
> I have Mac OS 10.12.6, and an older version of clang:
>
> Configured with:
> --prefix=/Applications/Xcode.app/Contents/Developer/usr
> --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/c++/4.2.1
>
> Apple LLVM version 8.1.0 (clang-802.0.42)
I compiled ECLiPSe 7.0#43 some time ago without these issues (although using an older version of Xcode).
Thanks for the suggestions. I will continue looking for the cause.
Cheers,
Paulo
-----------------------------------------------------------------
Paulo Moura
Logtalk developer
|
|
From: Kish S. <kis...@gm...> - 2019-09-18 13:25:25
|
Hi Paulo,
it looks like there is a problem with your clang's sizeof test. Try
compiling and running the following:
#include <stdio.h>
int main() {
int i = sizeof(int);
printf("sizrof(int)= %i\n", i);
}
compile and run the file:
Kish-Shens-iMac:text kish$ gcc t.c
Kish-Shens-iMac:text kish$ ./a.out
sizrof(int)= 4
Your messages suggest you will get 0 instead of 4 for this. If this is
the case, there is a serious problem with your version of clang, but I
could not find any mention of this problem with a quick web search.
If you get something other than 0 or 4, this would imply that clang or
Apple changed the size of int. I think ECLiPSe itself can cope with
this (it should only need a word size integer type), but apparently
GMP does not.
I have Mac OS 10.12.6, and an older version of clang:
Configured with:
--prefix=/Applications/Xcode.app/Contents/Developer/usr
--with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/c++/4.2.1
Apple LLVM version 8.1.0 (clang-802.0.42)
Cheers,
Kish
|
|
From: Paulo M. <pm...@lo...> - 2019-09-18 11:40:24
|
Hi, > On 18 Sep 2019, at 11:39, Joachim Schimpf <jsc...@co...> wrote: > > On 18/09/2019 10:21, Paulo Moura wrote: >> Hi, >> I'm trying to compile ECLiPSe 7.0#49 on macOS. GMP 6.1.2 is found during the configure phase. But during make I get the following errors: >> 23:23 $ make -f Makefile.$ECLIPSEARCH >> ======== make_shm ======== >> gcc -m64 -mmacosx-version-min=10.5 -D_REENTRANT -fPIC -fno-strict-overflow -Wno-logical-op-parentheses -Wno-bitwise-op-parentheses -Wno-pointer-sign -O2 -fomit-frame-pointer -I. -c -o alloc.o ../src/alloc.c >> In file included from ../src/alloc.c:53: >> ../src/memman.h:50:2: error: "No code for dealing with sizeof(int) != 4" >> #error "No code for dealing with sizeof(int) != 4" >> ^ > > > Hi Paulo, > > I have not seen this problem before. The message indicates that you are using a C compiler (or compiler option) that makes sizeof(int) != 4, which would be extremely unusual. > > Maybe it is just a problem during configure: when you run ./configure, does it output > > checking size of int... 4 > > or something different? Something is definitely wrong as configure reports: checking size of int... 0 checking size of long... 0 checking size of char *... 0 checking size of long *... 0 I'm using: $ gcc -v Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1 Apple LLVM version 10.0.1 (clang-1001.0.46.4) Target: x86_64-apple-darwin18.7.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin Is there other information that I can provide that helps debug this issue? Thanks, Paulo ----------------------------------------------------------------- Paulo Moura Logtalk developer |
|
From: Joachim S. <jsc...@co...> - 2019-09-18 10:57:46
|
On 18/09/2019 10:21, Paulo Moura wrote:
> Hi,
>
> I'm trying to compile ECLiPSe 7.0#49 on macOS. GMP 6.1.2 is found during the configure phase. But during make I get the following errors:
>
> 23:23 $ make -f Makefile.$ECLIPSEARCH
> ======== make_shm ========
> gcc -m64 -mmacosx-version-min=10.5 -D_REENTRANT -fPIC -fno-strict-overflow -Wno-logical-op-parentheses -Wno-bitwise-op-parentheses -Wno-pointer-sign -O2 -fomit-frame-pointer -I. -c -o alloc.o ../src/alloc.c
> In file included from ../src/alloc.c:53:
> ../src/memman.h:50:2: error: "No code for dealing with sizeof(int) != 4"
> #error "No code for dealing with sizeof(int) != 4"
> ^
Hi Paulo,
I have not seen this problem before. The message indicates that you are using a
C compiler (or compiler option) that makes sizeof(int) != 4, which would be
extremely unusual.
Maybe it is just a problem during configure: when you run ./configure, does it
output
checking size of int... 4
or something different?
-- Joachim
|
|
From: Paulo M. <pm...@lo...> - 2019-09-18 09:58:44
|
Hi,
I'm trying to compile ECLiPSe 7.0#49 on macOS. GMP 6.1.2 is found during the configure phase. But during make I get the following errors:
23:23 $ make -f Makefile.$ECLIPSEARCH
======== make_shm ========
gcc -m64 -mmacosx-version-min=10.5 -D_REENTRANT -fPIC -fno-strict-overflow -Wno-logical-op-parentheses -Wno-bitwise-op-parentheses -Wno-pointer-sign -O2 -fomit-frame-pointer -I. -c -o alloc.o ../src/alloc.c
In file included from ../src/alloc.c:53:
../src/memman.h:50:2: error: "No code for dealing with sizeof(int) != 4"
#error "No code for dealing with sizeof(int) != 4"
^
../src/memman.h:137:2: error: unknown type name 'bits32'
bits32 *map[BITMAP_BLOCKS]; /* bitmap of pages (1 = free) */
^
../src/alloc.c:60:13: warning: 'bcopy' macro redefined [-Wmacro-redefined]
# define bcopy(s1, s2, n) (void) memcpy((void *)(s2),(void *)(s1), n)
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/secure/_strings.h:45:9: note:
previous definition is here
#define bcopy(src, dest, ...) \
^
../src/alloc.c:190:27: error: expected expression
pages->map[i] = (bits32 *) 0;
^
../src/alloc.c:190:19: error: use of undeclared identifier 'bits32'
pages->map[i] = (bits32 *) 0;
^
1 warning and 4 errors generated.
make[1]: *** [alloc.o] Error 1
make: *** [make_shm] Error 2
Any hints?
Thanks,
Paulo
-----------------------------------------------------------------
Paulo Moura
Logtalk developer
|
|
From: Joachim S. <jsc...@co...> - 2019-05-13 22:31:11
|
On 13/05/2019 19:31, Panagiotis Stamatopoulos wrote: > Hello, > > Is there any explanation for the following behaviour? ... > [eclipse 3]: nth1(9,[a,b,c,d,e,f,g,h,i,j,k],V). > > V = V Hi Panagiotis, this was a regression that unfortunately slipped into version 7.0#45 (only this exact version), and has since been fixed. My apologies to everyone who was affected by this and spent time debugging. If you want to avoid installing a completely fresh version, you can download the single file listut.pl from https://sourceforge.net/p/eclipse-clp/git/ci/builds_7_0/tree/Contrib/listut.pl?format=raw and place it in the lib_public/ directory of your existing installation. As a small consolation, the family of nth-predicates has become quite a bit faster... Regards, Joachim PS: if you do a lot of indexed access, consider using arrays instead of lists. |
|
From: Panagiotis S. <ta...@di...> - 2019-05-13 21:44:10
|
Hello, Is there any explanation for the following behaviour? Thanks in advance. Regards, Panagiotis ----------------------------------------------------------------------- $ eclipse ECLiPSe Constraint Logic Programming System [kernel threads] Kernel and basic libraries copyright Cisco Systems, Inc. and subject to the Cisco-style Mozilla Public Licence 1.1 (see legal/cmpl.txt or http://eclipseclp.org/licence) Source available at www.sourceforge.org/projects/eclipse-clp GMP library copyright Free Software Foundation, see legal/lgpl.txt For other libraries see their individual copyright notices Version 7.0 #45 (x86_64_linux), Mon Feb 25 22:43 2019 [eclipse 1]: lib(listut). source_processor.eco loaded in 0.00 seconds hash.eco loaded in 0.00 seconds compiler_common.eco loaded in 0.01 seconds compiler_normalise.eco loaded in 0.00 seconds compiler_map.eco loaded in 0.00 seconds compiler_analysis.eco loaded in 0.00 seconds compiler_peephole.eco loaded in 0.00 seconds compiler_codegen.eco loaded in 0.01 seconds compiler_varclass.eco loaded in 0.00 seconds compiler_indexing.eco loaded in 0.00 seconds compiler_regassign.eco loaded in 0.00 seconds asm.eco loaded in 0.01 seconds module_options.eco loaded in 0.00 seconds ecl_compiler.eco loaded in 0.05 seconds File listut.pl, line 199: Singleton variable X File listut.pl, line 201: Singleton variable El /usr/local/eclipse/lib/listut.pl compiled 19824 bytes in 0.02 seconds Yes (0.06s cpu) [eclipse 2]: nth1(8,[a,b,c,d,e,f,g,h,i,j,k],V). V = h Yes (0.00s cpu) [eclipse 3]: nth1(9,[a,b,c,d,e,f,g,h,i,j,k],V). V = V Yes (0.00s cpu) [eclipse 4]: nth1(10,[a,b,c,d,e,f,g,h,i,j,k],V). V = V Yes (0.00s cpu) |
|
From: Joachim S. <jsc...@co...> - 2019-05-08 09:01:09
|
On 04/05/2019 18:58, Jan Drozen wrote: > Hi, > > In the Eclipse CLP, how many constraints or variables can I define? There is no specific limit on the number or variables or constraints. > I am currently remodeling my scheduling problem - I need to replace a single > |alldifferent| constraint with many |atmost| constraints. But since I've > introduced this change, my ecl script is not working anymore. By "not working" I > mean the Eclipse CLP - eclipse.exe or the TkEclipse GUI - just shuts down. > Without any error message, comment or saying goodbye. Just nothing. > > If I try to comment-out some constraints, the script at least gets compiled. > > Has someone already bothered with this issue? It turned out that Jan was working with large, generated source files with clauses of thousands of subgoals. Because ECLiPSe uses a recursive descent parser, such files can cause an OS stack overflow, in particular on Windows (code worked fine on Linux). Quick remedies include increasing the Windows stack limit, see https://docs.microsoft.com/en-us/cpp/build/reference/stack), or breaking up the generated code into smaller clauses, and call these in conjunction. Generally, however, generating textual source code isn't a great idea: it must be created, written, read, parsed, compiled, and is then executed just once. The preferable technique is to generate a pure data file that contains only things like arrays/lists of numbers, but _no_variables_. One can then have a small generic ECLiPSe program that reads these data and uses them to create variables and constraints, usually in several loops. For a very simple example, compare https://eclipseclp.org/examples/transport1.pl.txt (where all the data is explicit in the flat model) with https://eclipseclp.org/examples/transport_arr.pl.txt where the model is generic and all data comes from the data/3 fact at the end (this would correspond to the generated data file). Cheers, Joachim |
|
From: Joachim S. <jsc...@co...> - 2019-05-04 21:13:30
|
On 04/05/2019 18:58, Jan Drozen wrote: > Hi, > > In the Eclipse CLP, how many constraints or variables can I define? > > > I am currently remodeling my scheduling problem - I need to replace a single |alldifferent| > constraint with many |atmost| constraints. But since I've introduced this change, my ecl script is > not working anymore. By "not working" I mean the Eclipse CLP - eclipse.exe or the TkEclipse GUI - > just shuts down. Without any error message, comment or saying goodbye. Just nothing. > > If I try to comment-out some constraints, the script at least gets compiled. > > Has someone already bothered with this issue? > > > Kind regards, > Jan Hi Jan, your description is a bit too vague to do something about it. Can you send me a file that exhibits the problem? Thanks, Joachim |
|
From: Jan D. <dr...@se...> - 2019-05-04 18:13:39
|
Hi, In the Eclipse CLP, how many constraints or variables can I define? I am currently remodeling my scheduling problem - I need to replace a single alldifferent constraint with many atmost constraints. But since I've introduced this change, my ecl script is not working anymore. By "not working" I mean the Eclipse CLP - eclipse.exe or the TkEclipse GUI - just shuts down. Without any error message, comment or saying goodbye. Just nothing. If I try to comment-out some constraints, the script at least gets compiled. Has someone already bothered with this issue? Kind regards, Jan -- Jan Drozen dr...@dr... dr...@se... |
|
From: Paulo M. <pm...@lo...> - 2019-04-02 12:34:50
|
Hi, Logtalk 3.25.0 is now available for downloading at: https://logtalk.org/ New to Logtalk? Tutorials and a learning guide are available at: https://logtalk.org/guides.html Logtalk provides an alternative to Prolog modules, notably for programming in the large, and comes with a full set of developer tools: https://logtalk.org/tools.html This release focus on compiler linter and QuickCheck improvements. It adds 15 new linter checks, notably for possibly non-steadfast predicates, predicate and variable names that do not follow coding guidelines, repeat loops without a cut, redundant calls to built-in predicates and control constructs, cuts in clauses for multifile predicates, variable use in all-solutions predicate calls, and several others suspicious calls and constructs; adds two new compiler flags, "steadfastness" and "naming", to control the corresponding linter warnings; improves the goal-expansion mechanism to prevent infinite loops when the goal to be expanded resulted from a previous expansion of the same goal; updates the "coinductive/1" directive to also accept non-terminal indicators; updates the Handbook glossary; improves the Handbook sections on performance and on calling Prolog meta-predicates; fixes issues in the PDF version of the Handbook; improves "lgtunit" tool support for QuickCheck by allowing the user to specify the maximum number of shrink operations and by testing edge cases first; adds definitions for new types that take as argument a character set; adds shrinking supporty for most of the types supported by the "arbitrary" category; adds support for defining type edge cases to the "arbitrary" category; improves shrinking of list types; fixes steadfastness issues with some library predicates; and provides portability updates for GNU Prolog, SICStus Prolog, SWI-Prolog, and YAP. For details and a complete list of changes, please consult the release notes at: https://github.com/LogtalkDotOrg/logtalk3/blob/master/RELEASE_NOTES.md Happy logtalking! Paulo ----------------------------------------------------------------- Paulo Moura Logtalk developer |
|
From: Joachim S. <jsc...@co...> - 2019-02-08 00:51:57
|
On 29/01/2019 16:13, ISTENC TARHAN wrote: > Thanks for your quit explanatory answer. > > The only point I am worried about is the "Restarting the search" part. > After finding a new solution, incumbent solution is updated and search > is restarted. Yet, new search should have reduced domains of variables > due to the propagation in the previous searches, right? > Otherwise, each search would be equivalent to solving the original > problem with an updated upper bound. > > If I understand correctly, wouldn't this search scheme be too time consuming? Sorry for the very late reply... You are right, with the "restart" strategy you re-solve _almost_ the original problem, i.e. the original problem with a tighter cost bound. As you say, intuitively it seems that it should be possible to avoid duplicated work by using information from the previous search steps. However, this is not as simple as restarting with reduced domains: excluding parts of a search tree requires more complex representations, known as nogoods, which are difficult to implement efficiently. Fortunately, the cost bound is usually sufficient. Clearly, it ensures that the previous solution(s) will not be found again. And, via constraint propagation, the reduced domain of the cost variable will automatically reduce domains of other problem variables, and thus cut down the search space further. Having said that, the bb_min/3 predicate also supports a "continue" strategy, where the search is not restarted, but continues via failure in the same search tree (the tightened cost bound is then dynamically imposed for the remainder of the search). Surprisingly, this method is not always superior, essentially because restarting allows the search to be better tailored for the tighter problem. It is also less suitable for the kind of heuristic technique that you were envisaging. Cheers, Joachim > > Best, > İstenç > > On Mon, Jan 21, 2019 at 2:47 PM Joachim Schimpf <jsc...@co...> wrote: >> >> On 18/01/2019 14:19, ISTENC TARHAN wrote: >>> Hello, >>> >>> I need to perform the act in the subject "Updating lower bound - of a >>> minimization problem- during search" in my algorithm. Specifically, >>> when all variables are instantiated (i mean, at a leaf node), i want >>> to develop a new solution from it heuristically and update the upper >>> bound of the problem. >> >> >> The updating of the cost bound during minimization is typically >> handled by the branch-and-bound minimization predicate bb_min/3, see >> http://eclipseclp.org/doc/bips/lib/branch_and_bound/bb_min-3.html >> >> The basic usage is as follows: you start with a program that computes >> _all_ solutions, which usually has a structure such as >> >> all_solutions(Xs, Cost) :- >> constraint_model(Xs), % deterministic constraint setup >> Cost #= ..., % Cost is some function of Xs >> labeling(Xs). % nondeterministic search >> >> This will, on backtracking, generate every solution together with >> its cost. [Instead of labeling/1, you could use have used search/6 >> or you own search procedure.] >> >> To find a minimal solution, wrap the nondeterministic search predicate >> into bb_min/3: >> >> :- lib(branch_and_bound). >> >> best_solution(Xs, Cost) :- >> constraint_model(Xs), >> Cost #= ..., >> bb_min(labeling(Xs), Cost, bb_options{strategy:restart}). >> >> This works as follows (I describe the 'restart' strategy here): >> 1. labeling(Xs) finds a first solution with cost Cmin >> 2. bb_min restarts the search with a cost upper bound of Cmin-1 >> 3. if a better solution is found, call it Cmin and goto 2 >> 4. else the last value of Cmin is the optimum Cost >> >> "Restarting the search" simply means that the whole search (propagation, >> variable bindings, etc) is undone, and labeling/1 is called again. The >> only difference is that the cost upper bound is now lower than previously. >> >> >> Now, what you wanted to do was to use a previous solution in a heuristic >> for finding another solution. An easy way to do that is to introduce a >> "memory" that survives the undoing of the search before restart. >> In the following, I have used a "record" object >> (http://eclipseclp.org/doc/bips/kernel/record/index.html), but you could >> use any of the other non-backtrackable storage facilities described in >> http://eclipseclp.org/doc/bips/kernel/storage/index.html >> >> The Memory object is initialised before the optimization, and used to >> remember the last solution found. Note that bb_min/3 will still take >> are of the cost bound maintenance, making sure that only improving >> solutions are found: >> >> good_solution(Xs, Cost) :- >> constraint_model(Xs), >> Cost #= ..., >> record_create(Memory), >> bb_min(( >> ( erase(Memory, LastXs) -> >> % find new solution based on previous one >> heuristic_search(LastXs, Xs) >> ; >> % no previous solution, find a first one >> labeling(Xs) >> ), >> % store the new solution vector >> record(Memory, Xs) >> ), Cost, bb_options{strategy:restart}). >> >> If there was no previous solution (erase/2 fails), we use some >> default method to find a starting solution. Otherwise, we call our >> heuristic_search/2 with two vectors: a vector of values of the >> previous solution, and the corresponding vector of problem variables. >> >> By the way, a particularly simple way of implementing such a heuristic >> search is "shuffle search", where you set a random subset of the variables >> to their old solution values, and then simply let a standard labeling >> method fill in the rest. >> >> Such a heuristic approach is usually no longer a complete search: >> when heuristic_search/2 fails, it does not necessarily mean that no >> better solution exists, but only that the heuristic can't find one. >> There are again many strategies to recover from this, e.g. by trying >> to find a new, possibly randomized, starting solution. >> >> Randomized searches on huge search spaces do not usually terminate >> naturally, so you might also want to use bb_min's timeout option! >> >> >> Hope this helps, >> Joachim >> >> >> _______________________________________________ >> ECLiPSe-CLP-Users mailing list >> ECL...@li... >> https://lists.sourceforge.net/lists/listinfo/eclipse-clp-users |
|
From: ISTENC T. <ita...@ku...> - 2019-01-29 16:14:00
|
Thanks for your quit explanatory answer. The only point I am worried about is the "Restarting the search" part. After finding a new solution, incumbent solution is updated and search is restarted. Yet, new search should have reduced domains of variables due to the propagation in the previous searches, right? Otherwise, each search would be equivalent to solving the original problem with an updated upper bound. If I understand correctly, wouldn't this search scheme be too time consuming? Best, İstenç On Mon, Jan 21, 2019 at 2:47 PM Joachim Schimpf <jsc...@co...> wrote: > > On 18/01/2019 14:19, ISTENC TARHAN wrote: > > Hello, > > > > I need to perform the act in the subject "Updating lower bound - of a > > minimization problem- during search" in my algorithm. Specifically, > > when all variables are instantiated (i mean, at a leaf node), i want > > to develop a new solution from it heuristically and update the upper > > bound of the problem. > > > The updating of the cost bound during minimization is typically > handled by the branch-and-bound minimization predicate bb_min/3, see > http://eclipseclp.org/doc/bips/lib/branch_and_bound/bb_min-3.html > > The basic usage is as follows: you start with a program that computes > _all_ solutions, which usually has a structure such as > > all_solutions(Xs, Cost) :- > constraint_model(Xs), % deterministic constraint setup > Cost #= ..., % Cost is some function of Xs > labeling(Xs). % nondeterministic search > > This will, on backtracking, generate every solution together with > its cost. [Instead of labeling/1, you could use have used search/6 > or you own search procedure.] > > To find a minimal solution, wrap the nondeterministic search predicate > into bb_min/3: > > :- lib(branch_and_bound). > > best_solution(Xs, Cost) :- > constraint_model(Xs), > Cost #= ..., > bb_min(labeling(Xs), Cost, bb_options{strategy:restart}). > > This works as follows (I describe the 'restart' strategy here): > 1. labeling(Xs) finds a first solution with cost Cmin > 2. bb_min restarts the search with a cost upper bound of Cmin-1 > 3. if a better solution is found, call it Cmin and goto 2 > 4. else the last value of Cmin is the optimum Cost > > "Restarting the search" simply means that the whole search (propagation, > variable bindings, etc) is undone, and labeling/1 is called again. The > only difference is that the cost upper bound is now lower than previously. > > > Now, what you wanted to do was to use a previous solution in a heuristic > for finding another solution. An easy way to do that is to introduce a > "memory" that survives the undoing of the search before restart. > In the following, I have used a "record" object > (http://eclipseclp.org/doc/bips/kernel/record/index.html), but you could > use any of the other non-backtrackable storage facilities described in > http://eclipseclp.org/doc/bips/kernel/storage/index.html > > The Memory object is initialised before the optimization, and used to > remember the last solution found. Note that bb_min/3 will still take > are of the cost bound maintenance, making sure that only improving > solutions are found: > > good_solution(Xs, Cost) :- > constraint_model(Xs), > Cost #= ..., > record_create(Memory), > bb_min(( > ( erase(Memory, LastXs) -> > % find new solution based on previous one > heuristic_search(LastXs, Xs) > ; > % no previous solution, find a first one > labeling(Xs) > ), > % store the new solution vector > record(Memory, Xs) > ), Cost, bb_options{strategy:restart}). > > If there was no previous solution (erase/2 fails), we use some > default method to find a starting solution. Otherwise, we call our > heuristic_search/2 with two vectors: a vector of values of the > previous solution, and the corresponding vector of problem variables. > > By the way, a particularly simple way of implementing such a heuristic > search is "shuffle search", where you set a random subset of the variables > to their old solution values, and then simply let a standard labeling > method fill in the rest. > > Such a heuristic approach is usually no longer a complete search: > when heuristic_search/2 fails, it does not necessarily mean that no > better solution exists, but only that the heuristic can't find one. > There are again many strategies to recover from this, e.g. by trying > to find a new, possibly randomized, starting solution. > > Randomized searches on huge search spaces do not usually terminate > naturally, so you might also want to use bb_min's timeout option! > > > Hope this helps, > Joachim > > > _______________________________________________ > ECLiPSe-CLP-Users mailing list > ECL...@li... > https://lists.sourceforge.net/lists/listinfo/eclipse-clp-users |
|
From: Joachim S. <jsc...@co...> - 2019-01-21 11:45:07
|
On 18/01/2019 14:19, ISTENC TARHAN wrote: > Hello, > > I need to perform the act in the subject "Updating lower bound - of a > minimization problem- during search" in my algorithm. Specifically, > when all variables are instantiated (i mean, at a leaf node), i want > to develop a new solution from it heuristically and update the upper > bound of the problem. The updating of the cost bound during minimization is typically handled by the branch-and-bound minimization predicate bb_min/3, see http://eclipseclp.org/doc/bips/lib/branch_and_bound/bb_min-3.html The basic usage is as follows: you start with a program that computes _all_ solutions, which usually has a structure such as all_solutions(Xs, Cost) :- constraint_model(Xs), % deterministic constraint setup Cost #= ..., % Cost is some function of Xs labeling(Xs). % nondeterministic search This will, on backtracking, generate every solution together with its cost. [Instead of labeling/1, you could use have used search/6 or you own search procedure.] To find a minimal solution, wrap the nondeterministic search predicate into bb_min/3: :- lib(branch_and_bound). best_solution(Xs, Cost) :- constraint_model(Xs), Cost #= ..., bb_min(labeling(Xs), Cost, bb_options{strategy:restart}). This works as follows (I describe the 'restart' strategy here): 1. labeling(Xs) finds a first solution with cost Cmin 2. bb_min restarts the search with a cost upper bound of Cmin-1 3. if a better solution is found, call it Cmin and goto 2 4. else the last value of Cmin is the optimum Cost "Restarting the search" simply means that the whole search (propagation, variable bindings, etc) is undone, and labeling/1 is called again. The only difference is that the cost upper bound is now lower than previously. Now, what you wanted to do was to use a previous solution in a heuristic for finding another solution. An easy way to do that is to introduce a "memory" that survives the undoing of the search before restart. In the following, I have used a "record" object (http://eclipseclp.org/doc/bips/kernel/record/index.html), but you could use any of the other non-backtrackable storage facilities described in http://eclipseclp.org/doc/bips/kernel/storage/index.html The Memory object is initialised before the optimization, and used to remember the last solution found. Note that bb_min/3 will still take are of the cost bound maintenance, making sure that only improving solutions are found: good_solution(Xs, Cost) :- constraint_model(Xs), Cost #= ..., record_create(Memory), bb_min(( ( erase(Memory, LastXs) -> % find new solution based on previous one heuristic_search(LastXs, Xs) ; % no previous solution, find a first one labeling(Xs) ), % store the new solution vector record(Memory, Xs) ), Cost, bb_options{strategy:restart}). If there was no previous solution (erase/2 fails), we use some default method to find a starting solution. Otherwise, we call our heuristic_search/2 with two vectors: a vector of values of the previous solution, and the corresponding vector of problem variables. By the way, a particularly simple way of implementing such a heuristic search is "shuffle search", where you set a random subset of the variables to their old solution values, and then simply let a standard labeling method fill in the rest. Such a heuristic approach is usually no longer a complete search: when heuristic_search/2 fails, it does not necessarily mean that no better solution exists, but only that the heuristic can't find one. There are again many strategies to recover from this, e.g. by trying to find a new, possibly randomized, starting solution. Randomized searches on huge search spaces do not usually terminate naturally, so you might also want to use bb_min's timeout option! Hope this helps, Joachim |
|
From: ISTENC T. <ita...@ku...> - 2019-01-18 14:44:37
|
Hello, I need to perform the act in the subject "Updating lower bound - of a minimization problem- during search" in my algorithm. Specifically, when all variables are instantiated (i mean, at a leaf node), i want to develop a new solution from it heuristically and update the upper bound of the problem. I am an ILOG user and couldn't achieve the relevant update. I have read the user manuel of Eclipse's last release but I am not sure if I can do what I want. I appreciate if you can help me on this subject. Best, İstenç |
|
From: Joachim S. <jsc...@co...> - 2018-11-14 19:01:04
|
Hi Giuseppe,
Gecode (currently 4.4.0) is fully included with ECLiPSe.
However, we cannot distribute Gurobi, which is a commercial solver.
Our if_gurobi50.tgz package only contains the interface layer,
so you have to obtain libgurobi50.so from Gurobi directly.
Regards,
Joachim
On 14/11/2018 17:48, Giuseppe Cota wrote:
> Dear ECLiPSe developer,
>
> I've downloaded and installed ECLiPSe. Just to be sure, are Gecode and Gurobi
> alredy distributed with ECLiPSe (i think that gurobi's library are in
> if_gurobi50.tgz)? Or do I need to install them?
>
> Moreover there is an issue when trying to use gurobi.
>
> If I execute:
>
> lib(eplex_gurobi).
>
> an error occurs (output below):
>
> loading GUROBI 50 ... libgurobi50.so: cannot open shared object file: No such
> file or directory
> problem while trying to load a shared library in load("x86_64_linux/segurobi50.so")
> loading GUROBI 50 ... libgurobi50.so: cannot open shared object file: No such
> file or directory
> problem while trying to load a shared library in load("x86_64_linux/segurobi50.so")
> Eplex error: Could not find any of the solver interfaces:
> [solver(gurobi, B), solver(gurobi, B)]
> Eplex error: No solver loaded in lp_get_license
> eplex.eco loaded in 0.11 seconds
> eplex_gurobi.eco loaded in 0.00 seconds
>
> Yes (0.12s cpu)
>
> If instead I execute:
>
> lib(eplex).
> lib(eplex_gurobi).
>
> No error occurs.
>
> Best regards,
> Giuseppe Cota
>
> --
> Giuseppe Cota
> Postdoctoral Research Fellow
> DE - Dipartimento di Ingegneria
> Università di Ferrara
> Via Saragat 1, 44122, Ferrara, Italy
> Tel. +39 0532974827
>
>
>
> _______________________________________________
> ECLiPSe-CLP-Users mailing list
> ECL...@li...
> https://lists.sourceforge.net/lists/listinfo/eclipse-clp-users
>
|