• Stars
    star
    571
  • Rank 78,127 (Top 2 %)
  • Language
    Common Lisp
  • License
    MIT License
  • Created almost 10 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Corman Lisp

Corman Lisp

This is the open-source source release of Corman Lisp. The canonical home of this release is https://github.com/sharplispers/cormanlisp.

From the Corman Lisp 'Features' page:

Corman Lisp is a Common Lisp development environment for Microsoft Windows operating systems running on Intel platforms. Corman Lisp consists of a Common Lisp native code compiler for Intel processors, 80x86 assembler and disassembler, incremental linker and multi-window text editor. It requires a system running a Microsoft Windows operating system (such as Windows XP, Windows 2000, Windows ME or Windows NT). It is fully integrated with the Win32 API, and all the Windows API functions are readily available from Lisp.

Corman Lisp incorporates state-of-the-art compiler technology to bring you a Common Lisp system unmatched on Windows platforms.

Corman Lisp works on Windows XP SP3 and newer. It is also reported to work on Linux via Wine.

Source release history

In June 2013, Zach Beane contacted Roger Corman about the future of Corman Lisp. Roger replied:

Hi Zach,

Thanks for your interest in Corman Lisp. I have been unable to commit any resources to developing Corman Lisp for the last couple of years. I would be willing to convert it to open source, and let others take it over, as I don't expect to be able to get back to it any time soon. [...]

I see two primary issues at this point. First, the Corman Lisp kernel needs to be built with Visual Studio 2005, which is an old version of VS. At one point I built it with VS2008 and it built and ran, but some problem with the FFI caused applications saved, and the IDE, to have problems. This type of thing is fairly common as Microsoft makes subtle changes to the code generation of their C compiler, which in turn affects the Lisp kernel which has very tight rules about how it expects its code to look. I did a lot to reduce the kernel (move things from the kernel to Lisp code, which is then compiled safely), but did not fully resolve the VS 2008 issues. Now there is VS 2010 and 2012, and I never tried building with either of those. In general I find each newer version of VS is worse for native C/C++ debugging, as .NET has become Microsoft's primary platform for new software.

The other issue is running on 64-bit OS. Again, the FFI misbehaves when you have saved an application, or just doing a bunch of FFI stuff in an application. It is something to do with GC and the 64-bit support for running 32-bit applications (which is what CL is). It could be related to the same issue as I encountered with building under VS2008.

Tracking down this problem is difficult.

Regarding converting to a full 64-bit Lisp, this would be a much bigger effort. Corman Lisp gets such good performance by a large amount of hand-optimized x86 assembly code. This would all have to be rewritten/replaced in a 64-bit Lisp.

When Corman Lisp was first developed in the late 90s, there was really no competition on Windows platforms. Franz only had a 16-bit Lisp they were selling, and not really taking the Windows market seriously. Mac Common Lisp was on 680x0 and later PowerPC but didn't get to Windows for a very long time, and LispWorks didn't support Windows until much later. Now I think most all of those have good implementations on Windows (though only MCL is free). I have used Allegro extensively for a large contract with SRI and I see the value of a mature cross-platform system like they have. It is however extremely expensive, and developing applications for distribution requires lots of negotiation and per-license payments to Franz. Corman Lisp still has some advantages, I think--it is really a good hackers Lisp, when you want to easily get down into the assembly level, or in the guts of the compiler, to do almost anything. You have the power of Lisp to do those things with macros and a nice high-level dynamic environment.

I definitely want to see it live on, so am open to whatever enables that. I don't currently derive any significant income from it so that's not a concern for me.

In January 2015, Roger Corman agreed to release the Corman Lisp sources under the MIT license. He added:

Going forward with the code, I would probably say that the first step is getting the kernel (Corman Lisp server) to compile using a new version of MS Visual Studio (such as VS2012 or VS2013)--it was last compiled with VS2005. I tried at one point to get it to build with VS2008 (and I think the project files are still there) but ran into some bugs and didn't resolve them.

Getting the kernel to compile properly and the GC and FFI to work properly is tricky. The kernel is very sensitive to the generated code, and you pretty much have to disable all optimizations (since the GC depends on things like proper stack frames and the various code patterns when it is looking for references). The Makefiles and project files should have the settings set correctly (for VS2005) but newer compiler versions try to add new sophisticated optimizations, which then causes new issues.

Turning off optimizations shouldn't really negatively affect performance, as most of the kernel code gets replaced by compiled Lisp code during the build process. Some functions don't, however (the kernel code generator, for instance) and these are probably the source of the compiled code sensitivity.

Roger provided the source code for Corman Lisp to Zach, who updated the license information and posted the code to github.

N.B.

The problem which was reported by Roger was resolved. Current versions of Corman Lisp support modern, 64-bit versions of Windows.

Support

This source release of Corman Lisp is not officially supported, commercially or otherwise. For discussion of this source release of Corman Lisp, see the unofficial Corman Lisp mailing list.

License Information

Nearly all of the code is originally by Roger Corman. There are some contributions from Vassili Bykov and Reini Urban. With their explicit consent, their code is available under the MIT license:

  Permission is hereby granted, free of charge, to any person obtaining
  a copy of this software and associated documentation files (the
  "Software"), to deal in the Software without restriction, including
  without limitation the rights to use, copy, modify, merge, publish,
  distribute, sublicense, and/or sell copies of the Software, and to
  permit persons to whom the Software is furnished to do so, subject to
  the following conditions:

  The above copyright notice and this permission notice shall be
  included in all copies or substantial portions of the Software.

  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Some code is provided by Chris Double. It is available under the following terms:

  This software is provided 'as-is', without any express or implied
  warranty. In no event will the author be held liable for any damages
  arising from the use of this software.
 
  Permission is granted to anyone to use this software for any purpose,
  including commercial applications, and to alter it and redistribute
  it freely, subject to the following restrictions:
 
  1. The origin of this software must not be misrepresented; you must
     not claim that you wrote the original software. If you use this
     software in a product, an acknowledgment in the product documentation
     would be appreciated but is not required.
 
  2. Altered source versions must be plainly marked as such, and must
     not be misrepresented as being the original software.
 
  3. This notice may not be removed or altered from any source 
     distribution.

zlib is included under the following terms:

  Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler

  This software is provided 'as-is', without any express or implied
  warranty.  In no event will the authors be held liable for any damages
  arising from the use of this software.

  Permission is granted to anyone to use this software for any purpose,
  including commercial applications, and to alter it and redistribute it
  freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not
     claim that you wrote the original software. If you use this software
     in a product, an acknowledgment in the product documentation would be
     appreciated but is not required.
  2. Altered source versions must be plainly marked as such, and must not be
     misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.

  Jean-loup Gailly        Mark Adler
  [email protected]          [email protected]

diStorm dissassembly engine is distributed under the following terms:

diStorm4
The ultimate disassembler library.
Copyright (c) 2003-2016, Gil Dabah
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this software
   must display the following acknowledgement:
   This product includes software developed by Gil Dabah.
4. Neither the name of Gil Dabah nor the
   names of its contributors may be used to endorse or promote products
   derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY Gil Dabah ''AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL Gil Dabah BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Certain code in the Modules/ and Libraries/ subdirectories carries different licensing terms. See the individual modules and libraries for details.

The Common Lisp HyperSpec(TM) is Copyright 1996-2005, LispWorks Ltd. All Rights Reserved. It is included under specific conditions of use. It is complete and unmodified.

More Repositories

1

ironclad

A cryptographic toolkit written in Common Lisp
Common Lisp
174
star
2

clx

a fork of crhodes' fork of danb's fork of the CLX library, an X11 client for Common Lisp
Common Lisp
116
star
3

clawk

CLAWK is an AWK implementation embedded into Common Lisp, by Michael Parker. This version contains some patches to make it compile again.
Common Lisp
47
star
4

montezuma

Full-text indexing and search for Common Lisp
Common Lisp
46
star
5

linedit

Readline-style line-editor for Common Lisp.
Common Lisp
41
star
6

ops5

The Ops5 programming language for production systems
Common Lisp
36
star
7

split-sequence

SPLIT-SEQUENCE is a member of the Common Lisp Utilities family of programs, designed by community consensus.
Common Lisp
34
star
8

nibbles

A Common Lisp library for accessing octet-addressed blocks of data
Common Lisp
26
star
9

pseudoscheme

An implementation of Scheme embedded in Common Lisp
Scheme
24
star
10

cl-jpeg

A Common Lisp library for reading and writing JPEG image files
Common Lisp
23
star
11

parse-number

PARSE-NUMBER is a library of functions for parsing strings into one of the standard Common Lisp number types without using the reader.
Common Lisp
23
star
12

scheduler

Extensible Scheduler written in Common Lisp
Common Lisp
22
star
13

csv-parser

Some hacks on top of Alain Picard's CSV parser
Common Lisp
14
star
14

prepl

prepl is a REPL implementation, also known as a Lisp listener
Common Lisp
13
star
15

bknr.datastore

BKNR datastore - MOP-Based in-memory database with transactions for Common Lisp
Common Lisp
12
star
16

chipz

A Common Lisp library for decompressing deflate, zlib, gzip, and bzip2 data
Common Lisp
12
star
17

cxml

Closure XML - A Common Lisp XML Parser
Common Lisp
11
star
18

conium

A portability library for debugger- and compiler-related tasks in Common Lisp.
Common Lisp
10
star
19

slitch

Luke Gorrie's low-level networking library for Linux CMUCL
Common Lisp
9
star
20

cl-string-match

Common Lisp
7
star
21

xpath

Common Lisp Implementation of the XML Path Language (XPath) Version 1.0
Common Lisp
6
star
22

zlib

Matthieu Villeneuve's zlib
Common Lisp
5
star
23

xuriella

XSLT processor based on cxml
Common Lisp
4
star
24

diff

A Common Lisp library for computing differences between files
Common Lisp
4
star
25

log5

A Common Lisp logging framework organized around five things: categories, outputs, senders, messages and contexts
Common Lisp
4
star
26

portableaserve

Common Lisp
3
star
27

mw-equiv

Temporary home of Michael Weber's mw-equiv
Common Lisp
2
star
28

cxml-stp

Fork of David Lichteblau's cxml-stp library
Common Lisp
2
star
29

yaclml

Yet Another Common Lisp Markup Language, originally by Edward Marco Baringer
Common Lisp
1
star