Path: csiph.com!usenet.blueworldhosting.com!feeder01.blueworldhosting.com!news.misty.com!news.iecc.com!.POSTED.news.iecc.com!nerds-end From: "Seppo Laakko" Newsgroups: comp.compilers Subject: Cmajor 1.5.0 released Date: Wed, 31 Aug 2016 19:06:06 +0300 Organization: Compilers Central Lines: 78 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <16-08-016@comp.compilers> Mime-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 8bit Injection-Info: miucha.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="39455"; mail-complaints-to="abuse@iecc.com" Keywords: C, available Posted-Date: 31 Aug 2016 21:52:15 EDT X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: csiph.com comp.compilers:1738 Hi! Cmajor compiler version 1.5.0 released: http://sourceforge.net/projects/cmajor/files/1.5.0/ Source code also in GitHub: http://github.com/slaakko/cmajor Cmajor is a hybrid programming language based on C++ and C#. Its syntax is closer to C#'s than C++'s syntax and semantics closer to C++'s semantics than C#'s semantics. It's not garbage collected but relies on destructors doing the cleanup as in C++. It runs on Windows and Linux, has LLVM and C backends, has basic implementation of concepts, has an IDE in Windows, and has support for debugging integrated in IDE in Windows and using command line tool cmdb in Linux. New in this release: o Code completion in the editor (not perfect but mostly usable). o A document about implementation of the Cmajor compiler: Implementation.pdf in the doc subdirectory. o constexpr: a function declared constexpr is evaluated at compile time if given literal arguments of a basic type (int, uint, long, ulong, etc.). A constexpr function can call other constexpr functions. It can also be a function template. It can be called in contexts where a compile time constant is expected. When argument is not a literal it behaves as an ordinary function. constexpr is a new keyword. For example: public constexpr factorial(int n) { if (n == 0) return 1; return n * factorial(n - 1); } public const int fact5 = factorial(5); It is planned that in future the argument can also be an instance of a literal class type, where literal class type is sufficiently simple nonpolymorphic class type. o Intrinsic type predicates. There's now some intrinsic compile time Boolean functions that answer questions about types in System.Meta namespace: bool IsLvalueReferenceType(); bool IsRvalueReferenceType(); bool IsReferenceType(); bool IsConstType(); bool IsPointerType(); bool IsIntegerType(); bool IsClassType(); etc... o Predicate constraints for concept checking. One can call a constexpr or an intrinsic predicate function in a where-constraint: public int foo() where IsPointerType() { // ... } o System.Numerics.Multiprecision library has now BigFloat and BigRational classes. o Updated to LLVM version 3.8.1 and GCC version 5.4.0. Regards, Seppo Laakko