Andy Nutter-Upham, I just realized I didn't answer this exact question by
you in full details (I read the original message on the phone while being
quite busy with something a couple of weeks ago, and I somehow missed some
of intricacies of your question):
"If I missed the documentation and someone knows where it is, I'd love to
read it. I think though that since this is a wrapper library there is
instead reference to the underlying documentation (whose method names are a
bit different, and whose arguments are a bit different) and I find that
translation very challenging; especially since glimmer-dsl-libui is not yet
complete, so your run into ineffective keywords if you rely on the
underlying glimmer docs."
Glimmer DSL for LibUI actually does have full documentation for the Ruby
API:
https://github.com/AndyObtiva/glimmer-dsl-libui#supported-keywords
Someone asked me to add the documentation early on when the project was
new, and I added it to that person's satisfaction. I hope it's helpful to
you too.
By the way, I also do mention under the "Original API" section that you
could use the LibUI Go documentation as a reference:
https://pkg.go.dev/github.com/andlabs/ui
But, the most complete reference is the actual C headers:
https://github.com/andlabs/libui/blob/master/ui.h
And, the C headers are exposed as low-level FFI functions in Ruby as per
the Original API (but it's not recommended that you use these method
directly of course):
https://github.com/AndyObtiva/glimmer-dsl-libui#original-api
To give you an example of how the mapping from the C API to Ruby happens,
suppose we have this C function:
uiWindowSetTitle('My Application')
The word before the "Set" or "Get" operation is the control object (e.g.
window), and the word after it is the attribute (e.g. title).
So, the equivalent of that in the Glimmer GUI DSL:
window {
title 'My Application'
}
Basically, we are declaring a window control with one nested attribute of
title having the value 'My Application'
The C API is procedural and imperative whereas the Glimmer GUI DSL is
object-oriented and declarative, better mapping to the way we think of
concepts visually while looking at a screen given that you could nest
controls (widgets) within each other.
If you need further help, do not hesitate to ask further questions at the
Glimmer Gitter chat:
https://app.gitter.im/#/room/#AndyObtiva_glimmer:gitter.im
You shouldn't really get bogged down unless you are missing foundational
grounding in software engineering concepts relating to desktop development
in general, like MVC (Model View Controller). I've done GUI development
professionally in older technologies like Java Swing in the past, and by
comparison, Glimmer lets me leapfrog past productivity by 4x at least,
sometimes 10x or even more (and it's that much faster in productivity than
web development too, so it's great for building quick local apps or tools
that don't need the web as it's much simpler, demanding a tiny fraction of
web code only). But, it does assume you know MVC (Model View Controller)
very well, and it benefits from also knowing MVP (Model View Presenter).
Once you get the main ideas behind Glimmer, everything clicks, and things
like exact APIs or detailed documentation wouldn't matter much anymore
because the way you think with MVC/MVP is you start with the View layer
from a GUI mockup to support a specific user workflow, and you either use
native controls (like text and button, by looking them up in examples or
the docs mentioned above) or you invent your own custom controls (both
options are available in Glimmer DSL for LibUI). Of course, the native
controls are only as complete as what is implemented by the underlying
LibUI library. I know the authors of it are working on adding many new
features, like a Tree control, Table sorting listeners, and some other
missing features. They will all be added to Glimmer DSL for LibUI in due
time when they get released in C LibUI. But, that shouldn't stop someone
from learning the library and using whatever is available in it for now, or
at least mastering the current features until more features are added in
the future (especially given that you could always temporarily polyfill
missing features by building your own custom controls if really needed).
Cheers,
Andy Maleh
On Tue, Feb 14, 2023 at 9:27 PM grigoris charam <xargrigoris(a)gmail.com>
wrote:
> Stop reply all
>
> On Feb 15, 2023, at 03:05, Andy Maleh via ruby-talk <
> ruby-talk(a)ml.ruby-lang.org> wrote:
>
>
> The Glimmer Gitter Chat:
>
> https://app.gitter.im/#/room/#AndyObtiva_glimmer:gitter.im
>
> If you create any Glimmer related projects, libraries, or tools, you could
> alert of us of them in the Gitter Chat.
>
> And, you can open issues or pull requests on any of the Glimmer projects
> if needed:
> <glimmer.png>
> AndyObtiva/glimmer: DSL Framework consisting of a DSL Engine and a
> Data-Binding Library used in Glimmer DSL for SWT (JRuby Desktop Development
> GUI Framework), Glimmer DSL for Opal (Pure Ruby Web GUI), Glimmer DSL for
> LibUI (Prerequisite-Free Ruby Desktop Development GUI Library), Glimmer DSL
> for Tk (Ruby Tk Desktop Development GUI Library), Glimmer DSL for GTK
> (Ruby-GNOME Desktop Development GUI Library), Glimmer DSL for XML (& HTML),
> and Glimmer DSL for CSS <https://github.com/AndyObtiva/glimmer>
> github.com <https://github.com/AndyObtiva/glimmer>
> <https://github.com/AndyObtiva/glimmer>
>
>
> Andy Maleh
>
>
> LinkedIn: https://www.linkedin.com/in/andymaleh
> <https://www.linkedin.com/in/andymaleh>
> Blog: https://andymaleh.blogspot.com
> GitHub: https://github.com/AndyObtiva
> Twitter: https://www.twitter.com/AndyObtiva
>
> On Feb 14, 2023, at 7:51 PM, Fellipe Fingoli via ruby-talk <
> ruby-talk(a)ml.ruby-lang.org> wrote:
>
>
> really good content! I want to help to develop this ecosystem. Does
> anybody know where I can reach the community?
>
> Em ter., 7 de fev. de 2023 às 18:29, Andy Maleh via ruby-talk <
> ruby-talk(a)ml.ruby-lang.org> escreveu:
>
>> My RubyConf 2022 talk video on "Building Native GUI Apps in Ruby" using
>> the Fukuoka Award Winning Glimmer DSL for LibUI has just been released!
>>
>> https://youtu.be/1Bh4CnJqHyY
>>
>> Andy Maleh
>>
>> LinkedIn: https://www.linkedin.com/in/andymaleh
>> <https://www.linkedin.com/in/andymaleh>
>> Blog: http://andymaleh.blogspot.com
>> GitHub: http://www.github.com/AndyObtiva
>> Twitter: @AndyObtiva <https://twitter.com/AndyObtiva>
>>
>> ______________________________________________
>> ruby-talk mailing list -- ruby-talk(a)ml.ruby-lang.org
>> To unsubscribe send an email to ruby-talk-leave(a)ml.ruby-lang.org
>> ruby-talk info --
>> https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-talk.ml.ruby-lang.or…
>
>
>
> --
> Fellipe Fingoli
> ______________________________________________
> ruby-talk mailing list -- ruby-talk(a)ml.ruby-lang.org
> To unsubscribe send an email to ruby-talk-leave(a)ml.ruby-lang.org
> ruby-talk info --
> https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-talk.ml.ruby-lang.or…
>
> ______________________________________________
> ruby-talk mailing list -- ruby-talk(a)ml.ruby-lang.org
> To unsubscribe send an email to ruby-talk-leave(a)ml.ruby-lang.org
> ruby-talk info --
> https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-talk.ml.ruby-lang.or…
>
>
--
Andy Maleh
LinkedIn: https://www.linkedin.com/in/andymaleh
<https://www.linkedin.com/in/andymaleh>
Blog: http://andymaleh.blogspot.com
GitHub: http://www.github.com/AndyObtiva
Twitter: @AndyObtiva <https://twitter.com/AndyObtiva>
zenweb version 3.11.0 has been released!
* home: <https://github.com/seattlerb/zenweb>
* bugs: <https://github.com/seattlerb/zenweb/issues>
* rdoc: <http://docs.seattlerb.org/zenweb>
Zenweb is a set of classes/tools for organizing and formating a
website. It is website oriented rather than webpage oriented, unlike
most rendering tools. It is content oriented, rather than style
oriented, unlike most rendering tools. It uses a rubygems plugin
system to provide a very flexible, and powerful system.
Zenweb 3 was inspired by jekyll. The filesystem layout is similar to
jekyll's layout, but zenweb isn't focused on blogs. It can do any sort
of website just fine.
Zenweb uses rake to handle dependencies. As a result, scanning a
website and regenerating incrementally is not just possible, it is
blazingly fast.
Changes:
### 3.11.0 / 2023-09-28
* 1 minor enhancement:
* Added Page#link_head helper method to clean up <link...> tags
flog version 4.8.0 has been released!
* home: <http://ruby.sadi.st/>
* code: <https://github.com/seattlerb/flog>
* rdoc: <http://docs.seattlerb.org/flog>
* vim: <http://github.com/sentientmonkey/vim-flog>
Flog reports the most tortured code in an easy to read pain
report. The higher the score, the more pain the code is in.
Changes:
### 4.8.0 / 2023-09-28
* 2 minor enhancements:
* Added ability to pass down option overrides through Flog.run.
* Removed ancient File.binread alias.
* 1 bug fix:
* Added missing rdoc.
My RubyConf 2023 workshop submission titled "How To Build Desktop
Applications in Ruby" has been accepted! It will take place in San Diego,
California, USA on Monday, November 13, 2023 at 10am PT. Workshop seating
is limited, so please RSVP for your spot over here (
https://rubyconf-2023.sessionize.com/session/531448 ). This workshop
expands on last year's RubyConf 2022 talk "Building Native GUI Apps in
Ruby" ( https://www.youtube.com/watch?v=1Bh4CnJqHyY ).
RubyConf 2023 Workshop Details:
https://rubyconf-2023.sessionize.com/session/531448
Blog Post Announcement:
https://andymaleh.blogspot.com/2023/09/rubyconf-2023-how-to-build-desktop.h…https://raw.githubusercontent.com/AndyObtiva/glimmer-dsl-libui/master/image…
How To Build Desktop Applications in Ruby (2 hours):
Learn how to build desktop applications in Ruby with hands-on code
exercises!
Workshop outline (every step will involve a hands-on exercise or more):
1. GUI Basics (Controls, Properties, and Listeners):
2. MVC (Model-View-Controller) Software Architecture
3. Data-Binding and MVP (Model-View-Presenter) Software Architecture
4. Advanced Data-Binding
5. Area (Canvas) Graphics
6. Drag & Drop
7. Custom Components (Custom Controls, Custom Windows, Custom Shapes)
8. Application Scaffolding
This workshop will be conducted using Glimmer DSL for LibUI (
https://github.com/AndyObtiva/glimmer-dsl-libui ), the prerequisite-free
ruby desktop development cross-platform native GUI gem that won a Fukuoka
Ruby 2022 Special Award ( https://www.digitalfukuoka.jp/topics/187?locale=ja
) after getting judged by Matz, the creator of Ruby.
httpx 0.24.6 has been released.
NOTE: If nothing significant happens, this will be the last release before
v1 is released (which should happen during next week).
```
HTTPX.get("https://gitlab.com/honeyryderchuck/httpx
<https://gitlab.com/honeyryderchuck/httpx>")
```
HTTPX is an HTTP client library for the Ruby programming language.
Among its features, it supports:
* HTTP/2 and HTTP/1.x protocol versions
* Concurrent requests by default
* Simple and chainable API
* Proxy Support (HTTP(S), CONNECT tunnel, Socks4/4a/5)
* Simple Timeout System
* Lightweight by default (require what you need)
And also:
* Compression (gzip, deflate, brotli)
* Streaming Requests
* Authentication (Basic Auth, Digest Auth, AWS Sigv4)
* Expect 100-continue
* Multipart Requests
* Cookies
* HTTP/2 Server Push
* H2C Upgrade
* Automatic follow redirects
* International Domain Names
* GRPC
* Circuit breaker
* WebDAV
* Datadog integration
* Faraday integration
* Webmock integration
* Sentry integration
Here are the updates since the last release:
# 0.24.6
## Bugfixes
* fix Session class assertions not prepared for class overrides, which
could break some plugins which override the Session class on load (such as
`datadog` or `webmock` adapters).
# 0.24.5
## Bugfixes
* fix for SSL handshake post connection SAN check using IPv6 address.
* fix bug in DoH impl when the request returned no answer.
# 0.24.4
## Improvements
* `digest_authentication` plugin now supports passing HA1hashed with
password HA1s (common to store in htdigest files for example) when setting
the`:hashed` kwarg to `true` in the `.digest_auth` call.
* ex: `http.digest_auth(user, get_hashed_passwd_from_htdigest(user),
hashed: true)`
* TLS session resumption is now supported
* whenever possible, `httpx` sessions will recycle used connections so
that, in the case of TLS connections, the first session will keep being
reused, thereby diminishing the overhead of subsequent TLS handshakes on
the same host.
* TLS sessions are only reused in the scope of the same `httpx` session,
unless the `:persistent` plugin is used, in which case, the persisted
`httpx` session will always try to resume TLS sessions.
## Bugfixes
* When explicitly using IP addresses in the URL host, TLS handshake will
now verify if the IP address is included in the certificate.
* IP address will keep not being used for SNI, as per RFC 6066, section 3.
* ex: `http.get("https://10.12.0.12/get")`
* if you want the prior behavior, set `HTTPX.with(ssl: {verify_hostname:
false})`
* Turn TLS hostname verification on for `jruby` (it's turned off by
default).
* if you want the prior behavior, set `HTTPX.with(ssl: {verify_hostname:
false})`
# 0.24.3
## Improvements
* faraday adapter: reraise httpx timeout errors as faraday errors.
* faraday adapter: support `:bind` option, which expects a host and port to
connect to.
## Bugfixes
* faraday adapter: fix `#close` implementation using the wrong ivar.
* faraday adapter: fix usage of `requestt_timeout` translation of faraday
timeouts into httpx timeouts.
* faraday adapter: `ssl: { verify: false }` was being ignored, and
certification verification was still proceeding.
# 0.24.2
## Improvements
* besides an array, `:resolver_options` can now receive a hash for
`:nameserver`, which **must** be indexed by IP family (`Socket::AF_INET6`
or `Socket::AF_INET`); each group of nameservers will be used for emitting
DNS queries of that iP family.
* `:authentication` plugin: Added `#bearer_auth` helper, which receives a
token, and sets it as `"Bearer $TOKEN` in the `"authorization"` header.
* `faraday` adapter: now implements `#build_connection` and `#close`, will
now interact with `faraday` native timeouts (`:read`, `:write` and
`:connect`).
## Bugfixes
* fixed native resolver bug when queries involving intermediate alias would
be kept after the original query and mess with re-queries.
# 0.24.1
## Improvements
* datadog adapter: support `:service_name` configuration option.
* datadog adapter: set `:distributed_tracing` to `true` by default.
* `:proxy` plugin: when the proxy uri uses an unsupported scheme (i.e.:
"scp://125.24.2.1"), a more user friendly error is raised (instead of the
previous broken stacktrace).
## Bugfixes
* datadog adapter: fix tracing enable call, which was wrongly calling
`super`.
+ `:proxy` plugin: fix for bug which was turning off plugins overriding
`HTTPX::Connection#send` (such as the datadog adapter).
minitest-trump version 3.0.1 has been released!
* home: <https://github.com/seattlerb/minitest-trump>
* rdoc: <http://docs.seattlerb.org/minitest-trump>
NOTE: this project, like that infamous administration, is EOL'd.
For when the reality of your tests is just too much to bear, turn your
failures into fake news and errors into alt-facts, or golf.
Changes:
### 3.0.1 / 2023-09-27
* 1 bug fix:
* Fixed bad reference to MiniTest. HAH!
NOTE: this project, like that infamous administration, is EOL'd.
The JRuby community is pleased to announce the release of JRuby 9.3.11.0
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
JRuby 9.3.x is compatible with Ruby 2.6.x and stays in sync with C Ruby. As
always there is a mix of miscellaneous fixes so be sure to read the issue
list below.
Thank you to our contributors this release, you help keep JRuby moving
forward! @ahorek, @chadlwilson, @justinstoller, @k77ch7, @kares, @snoglobe
Ruby Compatibility
- Multiple fixes for keyword arguments edge cases. #7676, #7755, #7804,
#7816
Standard Library
- strscan is still built-in (not a gem) but has been updated to the
3.0.6 version. #7634, #7884, #7889
Along with this change, our Regexp engine joni is updated to 2.2.1
for Range optimizations.
- Default gem updates:
jruby-openssl0.14.2 #7877
JVM Integration
- Virtual thread use in Fiber can now be disabled using the
jruby.fiber.vthread=false property (or JRuby flag -Xfiber.vthread=false).
#7907
Build and Distribution
- The JRuby/Maven stack of plugins used to integrate Ruby and Maven
artifacts have been updated to the latest versions, now using JRuby 9.4.3.0
for builds and avoiding the use of deprecated rubygems.org APIs. #7880
33 Github Issues resolved for 9.3.11.0
#7216 - Something changed from 9.2.x to 9.3.x that causes a
SecurityException with access denied when using jruby as osgi-bundle
#7353 - SSH connection stucked with NET::SSH_7.0.1 and OpenSSH_8.0 with
FIPS enabled
#7394 - require_relative confused by chdir
#7483 - Regression in Socket#close - EBADF after unsuccessful connection
#7633 - Do not return early from ThreadService#terminate
#7634 - Update joni and strscan
#7635 - Cleanup IO state for true connect failures
#7648 - Array#fill not compliant with MRI
#7651 - Fix Array#fill for edge case
#7677 - SCRIPT_LINES__ is set to nil if you require ripper.
#7730 - Running specific regex with Regexp::IGNORECASE flag on text
starting with specific pipe character results in
java.lang.ArrayIndexOutOfBoundsException
#7742 - fix flipBuffer overloads
#7749 - When converting from binary to decimal with to_i(2), the result
will be 0 if it contains multiple underscores.
#7754 - [deps] update jruby-openssl to 0.14.1
#7762 - [fix] avoid walking constructor instructions on every call
#7769 - error: invalid multibyte character occurs in JRuby 9.4.2.0
#7782 - Fix defined?(super) on BasicObject from causing
NullPointerException
#7784 - [build] make generated .class files deterministic
#7794 - [deps] update joda-time to latest 2.12.5
#7805 - High lock contention in Socket.select in JRuby 9.3
#7806 - Reduce contention in heavy IO operations
#7877 - [deps] update jruby-openssl to 0.14.2
#7880 - Migrate to new mavengem (9.3 version)
#7889 - Update joni and strscan for recent fixes
#7906 - It seems that tomcat results in nullpointer exception when
clearing tread locals
#7907 - Improvements for vthread fibers
#7912 - Guard for null in StringWrapper
#7916 - ConcurrentModificationException during
RubyModule.defineAnnotatedMethods / Ruby.addBoundMethod
#7917 - Make bound method management threadsafe
#7920 - Restore default protection domain for OneShotCL
#7932 - Store absolute path of main at load time
#7933 - Improve line numbers for generated dynscopes
#7934 - Fix String#to_i with leading zero and underscores
--
blog: http://blog.enebo.com twitter: tom_enebo
mail: tom.enebo(a)gmail.com