So I finally figured out a way to get NTL to work in thread-safe mode on a much broader range of platforms, including Mac OSX (10.10 and above) and Linux with somewhat older gcc's (gcc version 4.8 and above).
This new version of NTL still requires many C++11 features in thread-safe mode, but it does not require "thread_local" storage. Rather, by default, it only uses gcc's older and simpler "__thread" storage, along with some direct calls to pthread library functions. One can override this default behavior by configuring with NTL_DISABLE_TLS_HACK=on. With this hack disabled, NTL still makes use of "__thread" storage wherever possible, and only uses "thread_local" storage for certain variables at block scope (and none at namespace scope). This generally leads to more efficient access to TLS variables and reduces the requirements on the compiler and run-time: many implementations of thread_local, especially at namespace scope, tend to be buggy and inefficient. To get thread safety, one still needs to configure with NTL_THREADS=on, or NTL_THREAD_BOOST=on. I have no idea if any of this works on Windows. It would be interesting to test some of this in Cygwin. I just learned that Cygwin can give you an LP64 data model, which is very nice. I don't have access to a Windows machine, so I can't test any of this myself. -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at https://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.