Lisp HUG Maillist Archive

Release of LispWorks 7.0


LispWorks Ltd is pleased to announce the release of LispWorks 7.0 on
Windows®, Macintosh®, x86/x86_64 Linux®, ARM Linux®, FreeBSD®, AIX®,
x86/x64 Solaris(TM) and SPARC/Solaris(TM) platforms. Also, new
LispWorks for Mobile Runtime products target Android and iOS apps.

LispWorks 7.0 brings these new features:

* 32-bit implementation for ARM Linux.
* 32-bit and 64-bit implementations for PowerPC/AIX.
* Java interface.
* Characters and strings support all Unicode planes.
* Editor supports Unicode entire range, including Chinese and Japanese
  characters.
* Improved documentation including consolidation of CAPI manuals with
  more cross references, and more self-contained examples.
* Code coverage tools.
* Asynchronous socket I/O and UDP sockets.
* Editor supports more fonts on Cocoa.
* Support for multi-touch gestures.
* Graphic Tools API (beta quality).
* More CAPI enhancements including efficient transient display on
  output-panes.
* Improvements in the IDE including Directory mode and buffers list
  options in Editor.
* Various other new features including:
  - Thread-safe operations for ensuring a hash table entry.
  - Efficient access for 8-bit simple vectors.
  - FLI type for holding the address of a foreign symbol (suitable for
    C to Lisp callbacks).
  - 64-bit integer FLI types in 32-bit LispWorks.
  - Efficient raw 64-bit arithmetic and vector access in 64-bit
    LispWorks.
  - UTF-16 and KOI8-R encodings.
  - CLOS optimizations for copying objects.
  - On Windows, delivered DLLs can use a private copy of the MSVCRT
    runtime.
  - On Macintosh, the Cocoa IDE's event loop has better error handling
    and a new defense against deadlocks.
* Bug fixes.


Not all features are supported for every LispWorks product and
platform. For details please see the feature table at

  http://www.lispworks.com/products/features.html

LispWorks Professional (64-bit implementation now available) and
Enterprise Editions still offer excellent value to commercial users
and academic institutions with no runtime license fees. An annual
maintenance contract is available.

LispWorks Hobbyist and HobbyistDV Editions now offer an affordable
fully functional Common Lisp IDE for non-commercial and non-academic
use by individuals.

LispWorks for Android Runtime allows you to deliver (non-GUI) Lisp
libraries which you can incorporate into Android apps ("mobile Lisp
libraries"). It is available as an add-on to customers with LispWorks
7.0, which you use to develop your code before creating the mobile
Lisp library. We do not charge runtime license fees for mobile Lisp
libraries generated by LispWorks for Android Runtime.

LispWorks for iOS Runtime allows you to deliver (non-GUI) Lisp
libraries which you can incorporate into iOS apps. It is available as
an add-on to customers with LispWorks 7.0, which you use to develop
your code before creating the mobile Lisp library. We do not charge
runtime license fees for mobile Lisp libraries generated by LispWorks
for iOS Runtime.

More details of the improvements in this release can be found in the
Release Notes at

  http://www.lispworks.com/documentation/lw70/RNIG/html/readme-131.htm


Prices
------
Pricing information for LispWorks 7.0 is at

 http://www.lispworks.com/buy/prices.html

Owners of LispWorks maintenance contracts valid at 31 December 2014
are entitled to free upgrades to LispWorks 7.0. We will contact you by
email with your upgrade information. If you are entitled to the
upgrade and do not receive our email today, please tell us at
lisp-sales@lispworks.com.


Ordering
--------
Order LispWorks 7.0 here:

  http://www.lispworks.com/buy/


Evaluation Licenses
-------------------
To evaluate LispWorks 7.0 prior to a possible purchase, please see:

  http://www.lispworks.com/buy/evaluation.html


LispWorks for iOS Runtime - 64-bit
----------------------------------
Currently LispWorks for iOS Runtime generates only 32-bit
libraries. We will update it to also generate 64-bit libraries
(required for the App Store).


LispWorks 7.0 Personal Edition
------------------------------
LispWorks 7.0 Personal Edition will be released later in 2015.


Contact LispWorks Ltd
---------------------
For product information, evaluation licenses, sales and service
renewals contact us at:

  http://www.lispworks.com/buy
  lisp-sales@lispworks.com 

For technical support contact us at:

  http://www.lispworks.com/support
  lisp-support@lispworks.com 


-- 
Dave Fox
LispWorks Ltd
http://www.lispworks.com/

Registered Office: St John's Innovation Centre, Cowley Road, Cambridge CB4 0WS
Registered in England: No. 5114963
EC VAT ID: GB 833329531
 

_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html


Re: Release of LispWorks 7.0

Definitely some good stuff in this release.  I'll give it a "three thumbs up!".    :^D

Brian C.


From: Dave Fox <davef@lispworks.com>
To: lisp-hug@lispworks.com
Sent: Tuesday, May 5, 2015 10:47 AM
Subject: Release of LispWorks 7.0



LispWorks Ltd is pleased to announce the release of LispWorks 7.0 on
Windows®, Macintosh®, x86/x86_64 Linux®, ARM Linux®, FreeBSD®, AIX®,
x86/x64 Solaris(TM) and SPARC/Solaris(TM) platforms. Also, new
LispWorks for Mobile Runtime products target Android and iOS apps.

LispWorks 7.0 brings these new features:

* 32-bit implementation for ARM Linux.
* 32-bit and 64-bit implementations for PowerPC/AIX.
* Java interface.
* Characters and strings support all Unicode planes.
* Editor supports Unicode entire range, including Chinese and Japanese
  characters.
* Improved documentation including consolidation of CAPI manuals with
  more cross references, and more self-contained examples.
* Code coverage tools.
* Asynchronous socket I/O and UDP sockets.
* Editor supports more fonts on Cocoa.
* Support for multi-touch gestures.
* Graphic Tools API (beta quality).
* More CAPI enhancements including efficient transient display on
  output-panes.
* Improvements in the IDE including Directory mode and buffers list
  options in Editor.
* Various other new features including:
  - Thread-safe operations for ensuring a hash table entry.
  - Efficient access for 8-bit simple vectors.
  - FLI type for holding the address of a foreign symbol (suitable for
    C to Lisp callbacks).
  - 64-bit integer FLI types in 32-bit LispWorks.
  - Efficient raw 64-bit arithmetic and vector access in 64-bit
    LispWorks.
  - UTF-16 and KOI8-R encodings.
  - CLOS optimizations for copying objects.
  - On Windows, delivered DLLs can use a private copy of the MSVCRT
    runtime.
  - On Macintosh, the Cocoa IDE's event loop has better error handling
    and a new defense against deadlocks.
* Bug fixes.


Not all features are supported for every LispWorks product and
platform. For details please see the feature table at

  http://www.lispworks.com/products/features.html

LispWorks Professional (64-bit implementation now available) and
Enterprise Editions still offer excellent value to commercial users
and academic institutions with no runtime license fees. An annual
maintenance contract is available.

LispWorks Hobbyist and HobbyistDV Editions now offer an affordable
fully functional Common Lisp IDE for non-commercial and non-academic
use by individuals.

LispWorks for Android Runtime allows you to deliver (non-GUI) Lisp
libraries which you can incorporate into Android apps ("mobile Lisp
libraries"). It is available as an add-on to customers with LispWorks
7.0, which you use to develop your code before creating the mobile
Lisp library. We do not charge runtime license fees for mobile Lisp
libraries generated by LispWorks for Android Runtime.

LispWorks for iOS Runtime allows you to deliver (non-GUI) Lisp
libraries which you can incorporate into iOS apps. It is available as
an add-on to customers with LispWorks 7.0, which you use to develop
your code before creating the mobile Lisp library. We do not charge
runtime license fees for mobile Lisp libraries generated by LispWorks
for iOS Runtime.

More details of the improvements in this release can be found in the
Release Notes at

  http://www.lispworks.com/documentation/lw70/RNIG/html/readme-131.htm


Prices
------
Pricing information for LispWorks 7.0 is at

http://www.lispworks.com/buy/prices.html

Owners of LispWorks maintenance contracts valid at 31 December 2014
are entitled to free upgrades to LispWorks 7.0. We will contact you by
email with your upgrade information. If you are entitled to the
upgrade and do not receive our email today, please tell us at
lisp-sales@lispworks.com.


Ordering
--------
Order LispWorks 7.0 here:

  http://www.lispworks.com/buy/


Evaluation Licenses
-------------------
To evaluate LispWorks 7.0 prior to a possible purchase, please see:

  http://www.lispworks.com/buy/evaluation.html


LispWorks for iOS Runtime - 64-bit
----------------------------------
Currently LispWorks for iOS Runtime generates only 32-bit
libraries. We will update it to also generate 64-bit libraries
(required for the App Store).


LispWorks 7.0 Personal Edition
------------------------------
LispWorks 7.0 Personal Edition will be released later in 2015.


Contact LispWorks Ltd
---------------------
For product information, evaluation licenses, sales and service
renewals contact us at:

  http://www.lispworks.com/buy
  lisp-sales@lispworks.com

For technical support contact us at:

  http://www.lispworks.com/support
  lisp-support@lispworks.com


--
Dave Fox
LispWorks Ltd
http://www.lispworks.com/

Registered Office: St John's Innovation Centre, Cowley Road, Cambridge CB4 0WS
Registered in England: No. 5114963
EC VAT ID: GB 833329531


_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html



Re: Release of LispWorks 7.0


> On May 5, 2015, at 9:47 AM, Dave Fox <davef@lispworks.com> wrote:
> 
> 
> 
> LispWorks Ltd is pleased to announce the release of LispWorks 7.0

....

> LispWorks 7.0 brings these new features:
> 
> * Java interface.

Certain features of the Java interface require a jarfile, which the documentation asserts can be found in 7-0-0-0/etc/lispcalls.jar. The 7.0 installer for Mac OSX installed no such jarfile on my system.

Is this an installer bug? Or are those features perhaps intended only for certain editions of Lispworks? I didn't notice any mention of such a restriction in the release notes or other documentation, but perhaps I didn't search thoroughly enough.

For reference, I'm using 32-bit Lispworks 7.0 Professional Edition.



_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html


Re: Release of LispWorks 7.0

mikel evins <mevins@me.com> writes:

>> LispWorks 7.0 brings these new features:
>> 
>> * Java interface.
>
> Certain features of the Java interface require a jarfile, which the
> documentation asserts can be found in 7-0-0-0/etc/lispcalls.jar. The 7.0
> installer for Mac OSX installed no such jarfile on my system.
>
> Is this an installer bug? Or are those features perhaps intended only for
> certain editions of Lispworks? I didn't notice any mention of such a
> restriction in the release notes or other documentation, but perhaps I didn't
> search thoroughly enough.
>
> For reference, I'm using 32-bit Lispworks 7.0 Professional Edition.

No such lispcalls.jar on Windows too...
-- 
 Georges Ko                     gko@gko.net                      2015-05-07

_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html


Lispworks 7.0 defining Java classes

Using Lispworks 7.0's Java interface, I don't see a straightforward way to define a subclass of a Java class in Lisp. I need this feature to support the work I'm presently doing.

Here's some code written in Kawa, the Scheme-on-JVM implementation I've been using:

(defclass FabricClient (SimpleApplication AnalogListener ActionListener)
  (slots:
   (app-settings init-form: #!null getter: getAppSettings)
   (client-state init-form: #!null getter: getClientState setter: setClientState)
   (user init-form: #!null getter: getUser setter: setUser)
   (character init-form: #!null getter: getCharacter setter: setCharacter)
   (screen init-form: #!null getter: getScreen setter: setScreen)
   (fabric-node init-form: #f getter: getFabricNode setter: setFabricNode)) 
  (methods:
   ((getCamera) cam)
   ((getCameraDirection) (*:getDirection cam))
   ((getAudioRenderer) audioRenderer)
   ((getViewport) viewPort)
   ((getInputManager) inputManager)
   ((getStateManager) stateManager)
   ((getGuiNode) guiNode)
   ((getGuiFont) guiFont)
   ((getKeyInput) keyInput)
   ((getScreen)(begin (if (jnull? screen)(set! screen (Screen (this))))
                      screen))
   ;; stubs for now; fix up in AppState
   ((onAnalog name value tpf) #f) 
   ((onAction name key-pressed? tpf) #f)
   ;; init the app
   ((simpleInitApp)(begin (*:setEnabled (*:getFlyByCamera (this)) #f)
                          #!void))))

To be clear, defclass in this case is a macro I wrote to reduce the boilerplate involved in using Kawa's define-simple-class. I assume you can probably infer what it does by inspection.

I don't see a straightforward way to do the equivalent of this using the Lispworks 7.0 Java interface. I see that it offers support for defining proxies, but I need to extend abstract Java classes and classes with abstract methods, because of the requirements of the libraries I'm working with.

Kawa does the job for me, but it does have a few disadvantages. It doesn't have the rich interactive development environment of Lispworks, and doesn't support interactive programming as well. I miss CLOS.

On the other hand, I must be able to extend Java classes in the way I'm asking about; the libraries I depend on require it.

Is it doable using the Lispworks Java interface? If so, where might I find an example of it? If it's not doable, just let me know and I'll stick with Kawa.



_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html


Re: Lispworks 7.0 defining Java classes

On Sat, May 9, 2015 at 12:50 PM, Pascal Costanza <pc@p-cos.net> wrote:
I haven’t checked the details of the LispWorks Java interface yet, but I doubt that what you want would be doable (but I would also be happy to be proven wrong). The reason for this is that Kawa is a Scheme implementation on top of the JVM, whereas LispWorks is /not/ implemented on top of the JVM, but runs side by side next to the JVM. As a stark oversimplification of what’s going on: Kawa is essentially ‘just’ a different syntax for the JVM, whereas LispWorks and the JVM are separate environments with some form of communication between these two environments.

Hi,

that's not exact in theory, but it might be in practice, if LispWorks and the JVM are separate processes. With enough work, LispWorks could generate the right bytecode to represent a Java class invoking Lisp functions via native FFI (same process) or some form of remoting (separate processes). Some work might also be needed on the application side to make such a class available to user code, depending on the structure of the Java side of the application. So, it is doable in theory, but it is quite a lot of work, and with LW and the JVM as separate processes, the chatty conversation involving a call into the remote Lisp for each method invocation might impose too big of an overhead if those calls are in a performance-sensitive inner loop, and might become a leaky abstraction (what if the connection link goes down in the middle of a method invocation?). So I wouldn't be surprised if they hadn't implemented such a thing.
 
What should be possible is to call Kawa remotely from LispWorks. Kawa provides an API which should allow you to remotely execute Scheme code on the JVM from within LispWorks. Maybe this gets you closer to what you want. However, I haven’t tested this myself yet.

Don't forget ABCL! ;) ABCL is Common Lisp and has a half-baked Java-class-in-Lisp implementation, which I started ages ago and never finished due to lack of interest (on my part and on the users part). Half-baked as in, IIRC, can't define constructors in Lisp and no nice macro to simplify syntax & allow defining Java classes at (Lisp) compile-time. But I may be persuaded to add the missing bits ;)
Note, since this is the LW mailing list after all ;), that I'm not promoting ABCL as a substitute for LispWorks, which is a much more solid, actively developed, supported and deployed implementation. ABCL in comparison is a niche product.. But, it might make sense, depending on the OP's requirements, to use LispWorks and its Java FFI as the primary platform, while offloading some specific bits to ABCL, leveraging the fact that both LW and ABCL understand the very same language, Common Lisp.
 
Alessio

Re: Lispworks 7.0 defining Java classes


Nick, Alessio, Pascal,

Thanks for the input. I'm aware of the alternatives and considerations you've offered, and I have tested the approaches you mentioned, as well as some others. I don't want to hijack the Lispworks list to discuss alternatives to Lispworks, so I won't get into the subject in any more detail here. I just wanted to double-check what appears on inspection to be true: that the Lispworks 7 Java API doesn't support subclassing arbitrary Java classes in Lisp code. I understand why it might not. Again, I just wanted to double-check before jumping to the conclusion that it doesn't.





_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html


Re: Lispworks 7.0 defining Java classes

Unable to parse email body. Email id is 13351

Updated at: 2020-12-10 08:33 UTC