v2023.2.1 (February 8, 2023)
Improved web server and client support
v2023.2.1
·
Numerous updates to the ‘Web.HTTP.Server’
bundle (new)
o
Web server JSON configuration framework
o
Static file caching framework
o
Support for page alias forwarding
o
More robust cookie support
·
Added ‘File->Copy(..)’, ‘Directory->Copy(..)’ and ‘Directory
->Rename(..)’ (new)
·
Fixed missing API documentation (bug)
·
Optimized array ‘Clear’ functions to zero out arrays (new)
·
Add an alternative ‘otherwise’ keyword to select statements (new)
·
Added ‘Double->Factoral(..)’,
‘Double->Gamma(..)’, ‘Double->DoubleFactoral(..)’
and ‘Int->DoubleFactoral(..)’ functions
·
Further optimized dispatch for virtual method calls
v2023.1.2
·
Added the ‘Web.HTTP.Server’
bundle (new)
o
Created a ‘MultipartEncoding’ class
o
Separated ‘Request’ and ‘Response’ objects
o
Added response compression support (i.e., ‘decompress,’ ‘gzip,’ and ‘br’)
o
Added cookie support
o
Optimized POST request
o
Updated example
code
·
Built support for binary literals (i.e., 0b1011)
·
Fixed an issue with the ‘Collection.Generic.Map’
class that prevented it from deleting an element when the map size was one
(bug)
Please
refer to the GitHub project
site for additional information.
The
Programmer’s Guide is in the “doc” directory. Additional examples are available
in the Rosetta Code.
If you are facing issues, please submit a bug report.
For
new developers, please refer to the getting starting guide.
app/ – Windows launcher (optional)
bin/ – compiler, debugger, and VM
doc/ – general documentation
doc/api/ – class library documentation
doc/syntax – files to enable syntax highlighting for supported
editors
examples/ – source code examples, including a 2D game
examples/doc – source code for self-documentation system
examples/tiny – “tiny” language compiler and VM
lib/ – supporting language libraries
lib/native/ – native OS shared libraries
lib/native/misc – support file the
portable runtime environment
lib/sdl/ – host SDL shared libraries
The Windows Launcher is a convenient way to run programs and
access documentation. On Windows, configuration information is stored in the “%ProgramData%\Objeck” directory and built the first time the
app runs. If you move the install location, delete the “%programdata%\Objeck”
directory and rerun the launcher.
To compile programs outside the “bin” directory set, the
“OBJECK_LIB_PATH” environment variable must be set. When this variable is set,
all library files must be in the directory specified.
If the Windows installer is used, these variables will be automatically
set.
To manually set the environment paths in Windows:
1. set OBJECK_LIB_PATH=< program_path >\objeck-lang\lib
2. set
PATH=%PATH%;< program_path >\ objeck-lang\bin; C:\
Users\<account>\ objeck-lang\lib\sdl
3. Note: If you
compiled Objeck from source under MSYS2 you do not need to include the “\ objeck-lang\lib\sdl” path as the
required SDL2 DLLs are already in the MSYS2 shell’s
path.
To manually set the environment paths in macOS and Linux:
Simple compile/execute:
1.
obc -src ..\examples\hello_0.obs
–OR-
1.
obc -src 'C:\Program Files\Objeck\objeck-lang\examples\encrypt_7.obs' -lib encrypt -dest my_prgm.obe
2. obr my_prgm
Compile/execute for code that has library dependencies:
1. obc -src ..\examples\xml_path.obs -lib collect.obl,xml.obl
-dest xml_path.obe
2. obr xml.obe
Old Intel OS X: You will need to install OpenSSL to use encryption APIs and iODBC to enable database support. Please refer to the
following link
for OpenSSL directions and this link
for ODBC support.
The
2D gaming framework is built around SDL2 (>=2.0.9). The
Windows distribution contains the required DLLs. Support for other platforms is
below.
For
Linux:
1.
sudo apt install libsdl1.2debian libsdl-gfx1.2-5 libsdl-gfx1.2-dev
libsdl-gfx1.2-doc libsdl-image1.2 libsdl-image1.2-dbg libsdl-image1.2-dev
libsdl-mixer1.2 libsdl-mixer1.2-dbg libsdl-mixer1.2-dev libsdl-net1.2
libsdl-net1.2-dbg libsdl-net1.2-dev libsdl-sound1.2 libsdl-sound1.2-dev
libsdl-ttf2.0-0 libsdl-ttf2.0-dev
For
macOS:
1. Apple Silicon
(arm64)
1.1.
Go to the “lib/native” directory an untar
the “sdl2_arm64.tgz” file
1.2.
Copy the include and lib files to “/usr/local/include”
and “/usr/local/lib”
The following to generate a self-signed SSL certificate for the ‘TCPSecureSocketServer’ class using OpenSSL commands (for
Windows and Linux):
1.
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout local.key -out local.crt
-subj "/CN=localhost" -addext "subjectAltName=DNS:localhost,DNS:www.local.net,IP:127.0.0.1"
2.
openssl x509 -in
local.crt -out cert.pem
3.
openssl rsa -aes256 -in local.key -out local.encrypted.key
4.
mv local.encrypted.key cert.key
5.
rm local.crt local.key
6.
chmod 600 cert.key
7.
Import ‘cert.pem’ into the host OS
Follow these instructions
for macOS.
The Objeck source repository is located here,
and the source can be fetched using the following command GIT command:
·
git clone https://github.com/objeck/objeck-lang.git
·
The software was developed under the FreeBSD License.
Supporting software licenses can be found here.
·
System tested on the following
o Windows 10
and 11 (Intel)
o
Ubuntu 22.04 (Intel)
o
Debian GNU/Linux 11 - Bullseye
(ARM64)
o
macOS 13.0.1 (Apple Silicon and
Intel)
·
Please report bugs
© 2023 Randy Hollines. All Rights Reserved.