Odyssey Web Browser (OWB) for classic AmigaOS 3.x
=================================================
This is Odyssey Web Browser, the WebKit-based browser from MorphOS, AROS
and AmigaOS 4, cross-compiled for classic 68k AmigaOS 3.x for the first
time. It is based on WebKitGTK 2.24.4 (February 2019). It renders modern
sites with real HTML5, CSS and JavaScript, and connects over HTTPS
(TLS 1.3) through AmiSSL.
EARLY TEST RELEASE
------------------
This is a first release to get it into people's hands. It works, but it
is slow and needs a lot of memory. It is built without the full compiler
optimisation (-O1), and the speed should improve in later releases.
Timings in WinUAE (68020 + 68881 FPU, JIT):
Window open after double-click about 9 seconds
duckduckgo.com home page about 8 seconds
DuckDuckGo search results about 70 seconds
en.wikipedia.org article 20-45 seconds
aminet.net about 7 seconds
On real hardware, even a 68060, expect it to be much slower than this.
Please report problems with a description of what you did, the site,
and any Guru code. Include whether you use WinUAE or real hardware, your
CPU and memory size, and your TCP/IP stack.
Requirements
------------
- AmigaOS 3.x with a 68020 or better and an FPU (68881/68882, or the
FPU built into the 68040/68060)
- Lots of fast RAM: 256 MB or more. Tested with 384 MB.
- MUI (tested with MUI 5)
- AmiSSL 5.27 or newer, for https
- A TCP/IP stack with bsdsocket.library
- An RTG graphics card with Picasso96 or CyberGraphX. Running on
AGA or ECS screens without RTG has not been tested.
Tested only on AmiKit XE in WinUAE 5.3.1: 68020 + 68881 FPU with JIT,
UAEgfx RTG, 384 MB. Not yet tested on real hardware, on 68030, 68040 or
68060 CPUs, without RTG, with Roadshow, or on a plain Workbench setup.
Reports welcome.
Installation
------------
1. Unpack the archive anywhere, for example to Work:.
2. Double-click the OWB icon. The icon sets the stack to 64,000,000
bytes, which OWB needs.
To start OWB from a Shell instead, set the stack first:
stack 64000000
OWB
Fonts are included in the Fonts drawer. No download is needed.
What works
----------
- Pages with HTML5, CSS and JavaScript: DuckDuckGo, Wikipedia,
Aminet and others
- HTTPS through AmiSSL
- Typing in forms, the caret, arrow keys and Backspace
- Search suggestions
- Tabs, back and forward, history and the URL completion list
- Cookies and local storage, kept between sessions
- Downloads (left-click a link to a file)
- Clean exit with several tabs open
Known issues
------------
- Slow. JavaScript-heavy pages can take a minute or more.
- Right-clicking does not open a context menu.
- file:/// URLs do not open local files.
- Running out of memory can crash the whole system instead of showing
an error. Keep plenty of free fast RAM.
- Memory use creeps up slowly when reloading pages.
- No video or audio playback in this build.
- YouTube does not work: its pages stop loading partway (also from the
search bar's YouTube option). Other search engines work.
- The URL box may complete a typed address to one from your history.
Press Del before Enter to remove the completion.
Source code and building
------------------------
The source code for this port, with build instructions:
https://github.com/themamboman/OdysseyWebBrowser-m68k
The AmigaOS 3.x threading library it uses:
https://github.com/themamboman/aos_multithreading_library
Built with the AmigaPorts m68k-amigaos-gcc (GCC 16) and clib2.
Making it run on 68k needed many fixes, mostly in the toolchain, the C
library and the third-party libraries, not in OWB itself. A few
examples:
- NaN comparisons, log10, fmod, pow and other maths that clib2 got wrong
- SQLite on AmigaDOS: seeking past the end of a file fails, unlike on
Unix, which broke cookies and history
- WebKit threads must be DOS processes, with their own bsdsocket and
AmiSSL bases
- JavaScriptCore assumed 4-byte alignment for pointers, but m68k GCC only
aligns them to 2 bytes: a crash that only appeared when the code
layout shifted
Credits
-------
- Odyssey Web Browser: Fabien Coeurjoly, Jacek Piszczek and Krzysztof
Smiechowicz (deadwood), based on OWB from Sand-Labs/Pleyo
- WebKit: Apple, the WebKitGTK team and contributors
- Libraries: cairo, pixman, FreeType, fontconfig, HarfBuzz, ICU, libcurl,
libxml2, libxslt, SQLite, libpng, libjpeg, zlib, bzip2, expat
- AmiSSL: the AmiSSL team
- Fonts: Liberation Sans and Mono 2.1.5 by Red Hat, under the SIL Open
Font License 1.1 (see Fonts/LICENSE.txt)
- clib2 and the m68k-amigaos GCC toolchain: their maintainers
- 68k port: TheMamboMan, with help from Claude (Anthropic)
License
-------
Odyssey Web Browser:
Copyright (C) 2014-2024 Krzysztof Smiechowicz
Copyright (C) 2020 Jacek Piszczek
Copyright (C) 2009-2014 Fabien Coeurjoly
Copyright (C) 2009-2010 Pleyo. 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. The names of the authors may not be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY ITS AUTHORS "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 ITS AUTHORS 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.
WebKit is licensed under the GNU LGPL 2.1 and BSD-style licenses. The
complete source code for this build, including WebKit, is available at
the GitHub address above. The bundled libraries keep their own licenses.
|