It is listed here the features and upgrades to each version of Coco8 application.
The project files of Coco8 platform can be downloaded from U8 service as a compressed (zip) file.
coco8 build 1.10.5
Update for iOS 12 (beta 6)
Update to current S8 version
Change in the order reading bridge support files, to ensure explisit definitions in default bridge are used. This change is important when running on OSX (see s8sx platform)
coco8 build 1.10.2
Update for iOS 11.4 (beta 5)
Update to current S8 version
Edited ffi-iphone support to avoid syntax error on "beg"
coco8 build 1.F.9
Update for iOS 11.3 (beta 6)
Update to current S8 version
Added messages for walkingUI (and workspace expressions)
coco8 build 1.F.6
Update for iOS 11.2
resolve issue with Function.prototype
Update to current S8 version
coco8 build 1.F.5
Extension for NativeObjects (static functions goes to static getters when no arguments)
platform libraries rebuilt
Update to current S8 version
JS correction for description when values are undefined
GarbageCollect patch revered (it do not prevent crash issue). Note: to avoid crash issue edit JSCocoaController class>#garbageCollect sending message #garbageCollectNow (instead of #garbageCollect)
coco8 build 1.8.8
hide keyboard when popup menu is shown (in workspace)
update S8 kernel (issue #11) e.g.: 3 > #4 (Error: must be a Number)
help for all tools
added CocoObject>>#bindings (retain references to native wrappers)
coco8 build 1.8.7
Force GC on creation of S8BlockAdaptor to avoid crash on completion blocks (change in file S8BlockAdaptor.m)
coco8 build 1.8.6
S8 kernel update
Now S8 evaluations/compile/fileIn are not exhausting object memory, reducing crash issues (can happen compiling long methods, e.g. test scripts)
coco8 build 1.8.5
Bug in JSCocoaCoordinator.m (deallocAndCleanupJS) removed
coco8 build 1.8.4
S8BlockAdaptor class>>#for:
default.bridgesupport type64 additions
FileBrowser update
coco8 build 1.8.3
NSUserDefaults extended class accessors and constants
remotion of senders of #as:
icon for help&information
SystemServer update
FileBrowser update
UIKIt additions
UIImagePickerController
coco8 build 1.8.1
File browser
coco8 build 1.8.0
S8 kernel update
removed dependecy from NSArray in classNamesFor:
unknown names in lowercase considered an error by Compiler
es6 issue removed(#constructorName)
coco8 build 1.7.8
S8 kernel changes in Compiler Assignment
S8 kernel changes in Number
coco8 build 1.7.7
Additions to UIControl
avoid error situation of app icons view (on #update)
more icons
FileAdaptor (new version)
coco8 build 1.7.6
Update of S8 kernel
(minimal) changes to SUnit frw
coco8 build 1.7.4
SystemServer upgrade
coco8 build 1.7.3
Update of S8 kernel
coco8 build 1.7.1
Update of S8 kernel
added support for String>>#appendToFile:
faster open of hierarchy in browse/index.html
FileAdaptor append mode
faster access in append mode
added to BurksPool:
(id)id_id:(id)p1 i:(int)p2 i:(int)p3 id:(id)p4
coco8 build 1.7.0
Update to last version of S8
Support for iOS 9.x (xcode 7.x required)
FileDownloader
Foundation & others: NSFileHandle, UISwitch, NSURLCache, NSURLResponse, NSHTTPURLResponse, NSUserDefaults
Systetized speech (text to speech)
New order for workspace items (to make it easy to hide keyboard)
Better NSObject instantiation from handle
Instantiation of NSObject at most concrete point in hierarchy
NSData to NSString conversions (UTF8)
better apps list and examples
coco8 build 1.6.7
Update to last version of S8
Added support for NSURLRequest, NSMutableURLRequest, NSURLSession
coco8 build 1.6.6
Update to last version of S8
Removed the bug for boolean property access of Coco8Objects. Note that it required the recompilation of all coco8 libraries & bindings.
coco8 build 1.6.4
Update to last version of S8
coco8 build 1.6.3
Update of S8 kernel (required recompilation of all code)
coco8 build 1.6.2
Update of S8 kernel
Compiler support for uppercased selectors
Adaption in object/barcode detector for mobile
(minimal) changes to UIKit
New SystemBrowser implementation (better search)
coco8 build 1.6.1
Update of S8 kernel
coco8 build 1.6.0
Update of S8 kernel
better #isKindOfClass: implementation
searchBar in system browser broken (deprecated by Apple from iOS 8.x)
coco8 build 1.5.B
Profiler added to InImageApps
sample of tracing execution
trace snapshot emmiting output onto Transcript
coco8 build 1.5.A
tested on ios9.1 (xcode 7)
type encodings revision passed
library update
TableViewManager extended & moved to U8Widgets
barcode scan sample (with video preview)
examples implementation
chooser UI
SMS & eMail UI (MessageUI framework)
coco8 build 1.5.7
update to current S8 kernel
[resolved] bug in #buildFunctions:
added #boundingBox accessors to UIView
preview for ObjectDetector (added sample for barcode scanning)
!coco8 build 1.5.6
update to current S8 kernel
coco8 build 1.5.5
Works ok on iOS 9.0.2 (the prior versions of iOS 9.0.x was buggy and crash JSC)
Barcode & face scanning
coco8 build 1.5.4
Bug removed for Class vs. class FFIArgument type
iOS 9.0
Memory exhausted for long #doIt expressions
-see mini8 project
-#needs work, work in progress
coco8 build 1.5.4
Bug removed for Class vs. class FFIArgument type
iOS 9.0
Memory exhausted for long #doIt expressions
see mini8 project
#needs work, work in progress
coco8 build 1.5.2
Remove “Smalltalk gc” in SystemBrowser.
Update of S8 kernel
Update of default.bridgeSupport
Update of JSCocoaController (better protocol, and introspection API)
Support for dynamic binding of SwikiRobots & Mobile apps
coco8 build 1.5.1
do NOT chache objects with refcount underflow (NSIndexPath* are allocated in high address space, and break JSC GC)
shorter path to resolve #toString in case of internal NSString buffers
coco8 build 1.5.0
Applications table (in Welcome screen mode)
Option for configuration reset
Faster system startup
coco8 build 1.4.8 to 1.4.B
Improvements to avoid JSCell::methodTable() failures & VM crash.
coco8 build 1.4.7
Now we can load the default.snapshot.js from an URL It is valuable for fast development cycles. Note: The workspace has new expressions to set/reset the image source
coco8 build 1.4.6
welcome page open linked URLs in the browser
immediate testing of JSCocoa handle (avoid #notNil test)
coco8 build 1.4.5
correction for BOOL return in Foundation&UIKit functions
NSArray implementation (needs more)
Corrected NSMutableString is subclass of NSString (was NSObject)
Additions to UIKit
UIProgressView
NSLayoutConstrains (constants)
s8-media swiki support Also running in Android and Web platforms
SwikiRobot
Automation expressions for tests,API, and more…
Enhancement of U8Configuration framework (compatible w/Android version)
coco8 build 1.4.4
(creation of this page)
updated s8 version
userName setting in configuration (Applications tab)
ensure object returned by #objC methods are unboxed using internal #handle instance or sending #json
changed delegated messages (JSCocoa:... to jsCocoa:...)
polygon sample removed from #coco8 distribution (it is distributed as project sample, see poly8 folder in coco8 source files>http://u8.smalltalking.net/profile/aleReimondo/coco8/)
coco8 build 1.4.5
correction for BOOL return in Foundation&UIKit functions
NSArray implementation (needs more)
Corrected NSMutableString is subclass of NSString (was NSObject)
Additions to UIKit
UIProgressView
NSLayoutConstrains (constants)
s8-media>http://swiki.smalltalking.net/s8-media swiki support Also running in Android and Web platforms
SwikiRobot
Automation expressions for tests,API, and more…
Enhancement of U8Configuration framework (compatible w/Android version)
OLD updates
Updates made using TestFlight mechanism
coco8 build 1.4.3
updated S8 version
enhancements to Workspace
more robust SystemBrowser (deferred update of tables make more stable)
coco8 build 1.4.1
updated S8 version
enhancements to Applications list
added cache for (named) UIImage - improve system stability
lowlevel interface upgrade
first round to avoid crash when registering new Objc classes
coco8 build 1.3.4
updated S8 version
http/https support for #read()
changed default mapping for String contents (was UTF8, changed to ASCII)
removed screen rotation bug
coco8 build 1.3.3
updated S8 version
removed bug in boolean getters, 64bits version (require all wrapper recompilation to repair)
[s8sx]PolygonSample needs work at Table pane (work in progress)
coco8 build 1.3.2
updated S8 version
removed bugs on CGPoint/CGSize structures
[s8sx]Added drag support for PolygonSample
coco8 build 1.3.1
updated ffi 64bit library
coco8 build 1.3.0
64&32bits release
s8 bug on #rename: removed
removed bug missing superclass when #garbageCollect
coco8 build 1.2.e
32 and 64bits ready! Now it runs in all devices and architectures armv7, armv7s, arm64 (no changes required at smalltalk level)
Note: Please update your application and test it
WE NEED YOUR HELP TESTING AND USING S8
for iOS and OSX development !
Known (64bits) bugs:
Polygon widget demo: the polygon is not rendered (it is an well known issue of 64bits iOS)
Gift Subway Surfers: crash opening share sheet, download+run app from U8 service is OK; crash in [UIApplicationExtensionGetAccurateShareServicesExtensionForIdentifier:block:invoke:2]
coco8 build 1.2.d
new organization for build (libraries created)
Fundation framework
added NSLocale, NSCalendar, &more
integrated with OSX library
arm64 bits support
NOTE: we are implementing arm64 architecture to conform Apple rules (all apps must have 64bits version included to be market compatible), and at this point we are running 64bits w/o issues on our side (we have found a few bug related with Apple compatibility issues), to run 64bits there is no changes to apply in smalltalk code, the BAD news is that actually the app crash in 32bits arm architecture so, avoid installing this build of coco8 in iPad (or other 32bits device)
coco8 build 1.2.c
filenames changed:
from iPhone. to default.bridgesupport
from coco8.snapshot.js to default.snapshot.js
added option to load default.image.js file (after snapshot)
edited to share codebase with S8 for OSX (s8sx)
BUG correction
NSDate instantiation messages
Some class side messages (w/o arguments) failed during runtime (implementation of wrapper was wrong)
GUI draft to let us evaluate javascript expressions in the global V8 context
the output of print() is logged onto debug console
state: we are executing global expression; so, we are ready to load our S8 image!
coco8 build 1.2.b
minor tweaks to new unboxing procedure
Foundation library changes
NSString class methods stringWith… changed to with…
added String>>#urlContents
Additions to U8Configuration
download code and configurations from U8 service
i8s build 1.0.0
v8 library embedded in native iOS app
v8 loaded and running
execute a simple script (output emmited to debug log)
build 1.2.a
NEW/Experimental: extended unboxing policy
NativeObjects unbox to instance @handle
S8 objects unbox sending message #json
(javascript/json) hashes unbox to NSDictionary
Array instances unbox to NSArray
s8 update
JS #@> and #description
(simple) Transcript implementation
print: output sent to Transcript (and to debug console, as usual)
BUGs removed
correct wrong comments (in uncommented methods).
report (on debug console) rare exceptions calling objC methods with invalid arguments.
Icons changed
build 1.2.9
changes in U8.storyboard (cell w/empty icon by default)
icons added for message categories
changed category #ObjC to #objC (use lowercase category names for messages)
better error handling in WebSockets test
build 1.2.8
s8 update
—changes in Compiler (opt. for #= number) and Stream>>#initialize
addition to burkspool (void_id:i:id:bool:)
check #delegate wrappers (must use typed accessors builder)
[Coco8] WebSockets (client) support (w/echo test)
build 1.2.7
[Coco8] customization of bridge support.
Dismiss keyboard option in workspace actions.
more icons
more testers
build 1.2.6
[Coco8] better support for customizing app via subclasssing.
check for implementation spec.
addition to burkspool (float_id:id:)
build 1.2.5
Additions to UIKit
—-UIControl constants for events and state
—-Correction to UIActionSheet (variable not found #message)
—-ActionSheet support (burkspool fn added for delegate)
U8Workspace button for text actions (no menu & no toolbar for more screen available for text edition on iPhone)
build 1.2.4
update of s8
—-revision of StringStream>>#peekForAll:
—-revision of Exporter
—-#references for CompiledMethod and Behavior
—-use #memoryWarning: event of SystemManager
other
—-safedealloc call on box finalization removed
—-[U8] more icons added
build 1.2.3
update of s8
revision of Stream impl. (#peekForAll:)
additions/corrections to UIKit & Foundation
UIApplication
NSString reading from file (NSError)
other
JSCocoaController logInstanceStats
outArgument and friends promoted to CocoObject class
build 1.2.2
update of s8
no refs to smalltalk in boot
additions/corrections to Foundation
NSMutableData, NSPurgableData
NSSet, NSMutableSet, NSCountedSet
no refs to iPhone.bridgetsupport in main folder
support for default.app.js in main boot
build 1.2.1
additions/corrections to Foundation
NSData
build 1.2.0
test iOS license (Account revoked alert in Xcode today)
additions/corrections to UIKit
UIApplication topMostController
Bug removal
UIKit&Foundation: #is… functions defined as booleanGetters (to return aBoolean)
build 1.1.E
Bug removal
bug in swipe to delete (References tool)
crash in search results table (in UISystemBrowser)
crash when fast scroll in Workspace/Apps/SystemBrowser table
additions/corrections to UIKit
boolean getter for #active property (needs work: revision of all boolean getters)
Experiments (we will revert if failures are reported)
built w/JSC in release mode & xcode6
build 1.1.D
update to current s8 state
#handleOf: moved to Object
Bug removal
vertical alignment in workspace text
“Delete” option in tables (was a wrong return value in callback)
there was a class variable overwrite (objC in Coco8Implementation)
UIScreen extent was wrong in landscape mode
References tab & table added (tool, not implemented yet)
build 1.1.B
update to current s8 state
objectiveC block adaptors (wrap s8 blocks to adapt to objectiveC blocks)
deferred evaluation (also running on web, for let us browse & xref coco8 apps using web browsers)
Additions to Foundation framework
NSOperation and NSOperationQueue
Array to NSArray conversion
NSUUID
Additions to UIKit framework
GestureRecognizer interfaces
build 1.1.9
update to current s8 state
new test devices
Additions to UIKit framework
build 0.0.1 (0.0.2)
update to current s8 state
minor update of Cva8
iOS version, S8+Cordova (webView) full cordova plugins and API; minimal GUI (you can dynamically load WI8+UI8 frameworks to render UI as in WI8 contribution -see u8.smalltalking.net )
Note that from the time Apple bought TestFlight they inhibit us to publish here the Android versions of S8; so if you want to test on Android devices, contact Ale to get Apk (or check the U8 Service to download updates of apk and sources)
build 1.1.0
crash during startup (corrected)
function registry bug (corrected? - needs testing)
coco8AppDelegate renamed to Coco8AppDelegate
build 1.0.1
trying to find why it is exiting in iOS8 after seconds running
upgrade to xcode6 & iOS8
delete for (table row) methods and classes in browsers
search in system browser (solved)
workspace (focus at start)
System Browser (icons for categories)
Class editor
icons for method categories
bug found when selecting (class search)
System Browser (w/icon and comment in list)
Class editor
draft of cos editor, method edition
fileOut action button
System Classes (list)
(statically) bound to JavascriptCore (JSC) library (it makes the app Market aware)
Found a bug/limitation in JSC that caused a WTFCrash, the JSC sources has been edited to avoid crash, but it still present anomaly in execution of callbacks (when GC is activated during callback?). The bug do not crash but it can be seen as blank table cells in class list.
It is the first release of a minimal (one screen) application demonstrating S8 running natively in iOS (iPhone and iPad).
We start Apple's javascript engine at application boot and load our S8 image (from app's internal storage). The image implements ALL ObjectiveC code needed to startup+App+GUI as Smalltalk classes. We can implement/refine ObjectiveC classes (&subclasses) and methods at any level.
The coco8 app set the application instance that open on screen at startup.
The elements rendered in screen are:
1.- a Polygon widget implementing rendering and drag interation in smalltalk, similar to a VSE's GraphPane.
2.- a table with two rows containing slider and switch (native) controls to interact with the polygon widget.
This sample app help to understand that now:
we do NOT need to embed our app in a web view (that force us to be inside html5/DOM constrains).
we can boot fast and build smaller apps, completely written in s8 (accessing all iOS objects dynamically).
it is a very good platform to develop iOS apps that do NOT need to be published in the market.
we can reflect on any native object/class and modify native objects on demand.
Again… ALL code is written in S8 smalltalk! it is not required to write/change a line of objectiveC to write plugins, hook of implement at native iOS level.