Skip to content
View in the app

A better way to browse. Learn more.

Opusmodus

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

ADSF support for Opusmodus 3: could you please set :keep-modules to T when creating the Opusmodus delivery?

Featured Replies

I just tried using Opusmodus 3, but unfortunately there is a principle problem for me: it prevents me from loading any of me pre-existing libraries, which provide a lot of functionality already, but which I created for Opusmodus 2 (libraries like tot, cluster-engine, cluster-rules, cm-patterns etc.). It appears this is caused by the switch of Lisp compilers, and that the new version -- now based on LispWorks -- has been "delivered" without ADSF support.

 

However, it appears this can be changed easily for Opusmodus by adjusting the parameters for creating the delivery to :KEEP-MODULES T (see docs). This is also what the error message I get is saying.

 

> (require :tot)
Error: REQUIRE was called after delivery time with module :tot.
To fix this, either require the module before delivery or use :KEEP-MODULES T.
  1 (abort) Return to top loop level 0.
Type :b for backtrace or :c <option number> to proceed.
Type :bug-form "<subject>" for a bug report template or :? for other options.

 

 

Context for those interested in tech details: ADSF is the de facto standard for loading Common Lisp applications that consist of multiple source files etc. It is also part of LispWorks (though seemingly in the outdated version 2, because LispWorks has its on system for such purposes, but that is another matter).

 

LispWorks is a commercial Lisp compiler, and when you deliver your Lisp application to your client, you usually create a delivery of your software, which disables some of the LispWorks features. After all, LispWorks still wants to sell further copies of its development environment (in fact, it is amazing how much development functionality can be preserved in a delivery as demonstrated by Opusmodus itself).

 

Nevertheless, when creating the delivery it is possible to opt out of disabling some of the features, e.g., with the above-mentioned parameter KEEP-MODULES, as documented by LispWorks (I also remember from PWGL times, which was also a LispWorks delivery, that it was possible to load modules with ADSF).

 

Sorry, but it has been a few years since I have had time using Opusmodus for the last time, and at the time I have still been using version 2 (on my previous MacBook).

 

Thanks a lot! 

BTW: There are a bunch of hopefully helpful links in the above post, but for some reason they are not highlighted as such.

require is not ASDF, it is Common Lisp.
To load ASDF system, you should use asdf:load-system, for example:

 

(asdf:load-system :tot)


This is how Opusmodus itself load third party code.
Apparently SBCL made require use asdf:load-system.
 

Quote

ADSF is the de facto standard for loading Common Lisp applications that

 

consist of multiple source files etc.

That is the reason to use asdf:load-system.

  • Author

Oh, thanks for clarifying that for loading modules is still possible to use asdf:load-system as a workaround. Nice. I can confirm that this is working!

 

I still get errors, e.g., when loading cluster-engine, but it is now up to me trying to get that fixed. 😉

  • Author

Update: I meanwhile managed to fix one of the issues, which prevented loading cluster-engine (some Swedish word in a comment  caused some character encoding and end-of-line style mismatch, that was tricky to pin down, in particular also due to a somewhat cryptic error message 🙄). Unfortunately, there is still some other problem when loading the tot library, which I will hunt down eventually, and then share my fixes at Github.

 

In the meantime, I decided to simply use Opusmodus 2 on my old MacBook for a little longer, as there also the Emacs/Slime interface just works.

 

  • 4 weeks later...
  • Author

Update: My tot library can now in principle be loaded into Opusmodus 3. However, note the current disclaimer (link) in the Readme on some still existing issues with its Opusmodus 3 support.

 

Myself, I will for now continue using mainly Opusmodus 2, because there the Emacs/Slime interface still works. For my workflow, that interface makes a huge difference in terms of work speed etc. (I cannot really develop Lisp libraries without access to an interactive debugger, the convenient cross references between different definitions and so on).

  • Author

Thanks for your encouragement, Stephane!

 

In case you want to use this and run into difficulties, just let me know. If I am not responding to any messages on the forum (apologies in advance), feel free to send me an email. You'll find my email address in the impression on my website linked in my profile.

Create an account or sign in to comment


Copyright © 2014-2026 Opusmodus™ Ltd. All rights reserved.
Product features, specifications, system requirements and availability are subject to change without notice.
Opusmodus, the Opusmodus logo, and other Opusmodus trademarks are either registered trademarks or trademarks of Opusmodus Ltd.
All other trademarks contained herein are the property of their respective owners.

Powered by Invision Community

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.