Skip to content
Menu
Open World News Open World News
  • Privacy Policy
Open World News Open World News

Tech/News/2022/44

Posted on November 1, 2022 by Michael G
Other languages: Bahasa Indonesia, Deutsch, English,Esperanto, français, ikirundi, italiano, magyar, polski, svenska, čeština, русский, українська, עברית, العربية, فارسی, हिन्दी, বাংলা, ಕನ್ನಡ, 中文, 日本語, 粵語, ꯃꯤꯇꯩ…

Talking Drupal: Talking Drupal #371 – WebOps Enabled Accessibility

Posted on November 1, 2022 by Michael G

Today we are talking about WebOps Enabled Accessibility with Tearyne Almendariz and Blake Bertuccelli.

For show notes visit: www.talkingDrupal.com/371

Topics

  • What is WebOps Enabled Accessibility
  • Who should be concerned about it
  • Describe a few use cases
  • What types of tests are good to perform
  • If Accessibility is “built-in” why do I need to test for it
  • How much accessibility is content related
  • Where do you run the tests
  • Are they pass / fail or percentage based
  • What tools are most common
  • How does Pantheon support WebOps Accessibility
  • Equalify.app

Resources

  • What is WebOps
  • An open source project that opens the internet for all
  • Equalify.app
  • International Accessibility Laws
  • Certification Link
  • Native Web Components and Accessibility
  • Training from Harvard
    • https://accessibility.huit.harvard.edu/training
    • https://accessibility.huit.harvard.edu/calendar/upcoming/das-events/accessibility-training-events
  • Training from DoJ
  • Brian Charlson Keynote
  • IAAP Certifications
    • https://www.accessibilityassociation.org/s/accessible-document-specialist
    • https://www.accessibilityassociation.org/s/certified-professional
    • https://www.accessibilityassociation.org/s/wascertification
  • Accessibility testing on commit
  • Equalify Github repo
  • UK gov tool audit
  • Accessibility statement on Pantheon

Guests

Blake Bertuccelli-Booth – Equalify.app @bbertucc

Hosts

Nic Laflin – www.nLighteneddevelopment.com @nicxvan John Picozzi – www.epam.com @johnpicozzi Tearyne Almendariz – @tearyneg

MOTW Correspondent

Martin Anderson-Clutz – @mandclu

Entity Comparison

  • Brief description
    • Generate a configurable comparison table for two or more Drupal entities: products, events, people, etc
    • Not dependent on Commerce, but should be compatible
  • Brief history
    • Created in 2017
  • Current version
    • Current 4.0 release created in Aug 2022, ready for Drupal 10, and has security coverage
  • Actively maintained
  • Number of open issues
    • 3 open, 2 have patches
  • Usage stats
    • 292 sites
  • Module features and usage
    • Generates “Comparison” configuration entities, which specify which entity type and bundle will be used
    • Automatically creates a view mode for the selected bundle
    • Fields set to display will be included in the comparison table
    • Two custom blocks: one to show the link to add to or remove an entity from the comparison (via AJAX), and one to show a link to the comparison
    • Link for toggle of an entity’s inclusion is also available as a field

Rubber Duck Dev Show Episode 63 | Halloween Party With Coding Horror Stories

Posted on November 1, 2022 by Michael G
In this episode, we host a panel of developers discussing their coding horror stories: https://www.rubberduckdevshow.com/episodes/63-halloween-party-with-coding-horror-stories/

Replace your Linux file manager with Midnight Commander

Posted on November 1, 2022 by Michael G

If you want the experience of “walking” through your filesystem but don’t want to leave the comfort of your terminal, try the mc command. Read More at Enable Sysadmin

The post Replace your Linux file manager with Midnight Commander appeared first on Linux.com.

Andy Wingo: ephemerons and finalizers

Posted on November 1, 2022 by Michael G

Good day, hackfolk. Today we continue the series on garbage collection
with some notes on ephemerons and finalizers.

conjunctions and disjunctions

First described in a 1997 paper by Barry
Hayes
, which
attributes the invention to George Bosworth, ephemerons are a kind of
weak key-value association.

Thinking about the problem abstractly, consider that the garbage
collector’s job is to keep live objects and recycle memory for dead
objects, making that memory available for future allocations. Formally
speaking, we can say:

  • An object is live if it is in the root set

  • An object is live it is referenced by any live object.

This circular definition uses the word any, indicating a disjunction:
a single incoming reference from a live object is sufficient to mark a
referent object as live.

Ephemerons augment this definition with a conjunction:

  • An object V is live if, for an ephemeron E containing an
    association betweeen objects K and V, both E and K are live.

This is a more annoying property for a garbage collector to track. If
you happen to mark K as live and then you mark E as live, then you
can just continue to trace V. But if you see E first and then you
mark K, you don’t really have a direct edge to V. (Indeed this is
one of the main purposes for ephemerons: associating data with an
object, here K, without actually modifying that object.)

During a trace of the object graph, you can know if an object is
definitely alive by checking if it was visited already, but if it wasn’t
visited yet that doesn’t mean it’s not live: we might just have not
gotten to it yet. Therefore one common implementation strategy is to
wait until tracing the object graph is done before tracing ephemerons.
But then we have another annoying problem, which is that tracing
ephemerons can result in finding more live ephemerons, requiring another
tracing cycle, and so on. Mozilla’s Steve Fink wrote a nice article on
this
issue

earlier this year, with some mitigations.

finalizers aren’t quite ephemerons

All that is by way of introduction. If you just have an object graph
with strong references and ephemerons, our definitions are clear and
consistent. However, if we add some more features, we muddy the waters.

Consider finalizers. The basic idea is that you can attach one or a
number of finalizers to an object, and that when the object becomes
unreachable (not live), the system will invoke a function. One way to
imagine this is a global association from finalizable object O to
finalizer F.

As it is, this definition is underspecified in a few ways. One, what
happens if F references O? It could be a GC-managed closure, after
all. Would that prevent O from being collected?

Ephemerons solve this problem, in a way; we could trace the table of
finalizers like a table of ephemerons. In that way F would only be
traced if O is live already, so that by itself it wouldn’t keep O
alive. But then if O becomes dead, you’d want to invoke F, so you’d
need it to be live, so reachability of finalizers is not quite the same
as ephemeron-reachability: indeed logically all F values in the
finalizer table are live, because they all will be invoked at some
point.

In the end, if F references O, then F actually keeps O alive.
Whether this prevents O from being finalized depends on our definition
for finalizability. We could say that an object is finalizable if it is
found to be unreachable after a full trace, and the finalizers F are
in the root set. Or we could say that an object is finalizable if it is
unreachable after a partial trace, in which finalizers are not
themselves in the initial root set, and instead we trace them after
determining the finalizable set.

Having finalizers in the initial root set is unfortunate: there’s no
quick check you can make when adding a finalizer to signal this problem
to the user, and it’s very hard to convey to a user exactly how it is
that an object is referenced. You’d have to add lots of gnarly
documentation on top of the already
unavoidable
gnarliness
that you already had to write. But, perhaps it is a local maximum.

Incidentally, you might think that you can get around these issues by
saying “don’t reference objects from their finalizers”, and that’s true
in a way. However it’s not uncommon for finalizers to receive the
object being finalized as an argument; after all, it’s that object which
probably encapsulates the information necessary for its finalization.
Of course this can lead to the finalizer prolonging the longevity of an
object, perhaps by storing it to a shared data structure. This is a
risk for correct program construction (the finalized object might
reference live-but-already-finalized
objects
),
but not really a burden for the garbage collector, except in that it’s a
serialization point in the collection algorithm: you trace, you compute
the finalizable set, then you have to trace the finalizables again.

ephemerons vs finalizers

The gnarliness continues! Imagine that O is associated with a
finalizer F, and also, via ephemeron E, some auxiliary data V.
Imagine that at the end of the trace, O is unreachable and so will be
dead. Imagine that F receives O as an argument, and that F looks
up the association for O in E. Is the association to V still
there?

Guile’s
documentation
on guardians, a
finalization-like facility, specifies that weak associations
(i.e. ephemerons) remain in place when an object becomes collectable,
though I think in practice this has been broken since Guile switched to
the BDW-GC collector some 20 years ago or so and I would like to fix it.

One nice solution falls out if you prohibit resuscitation by not
including finalizer closures in the root set and not passing the
finalizable object to the finalizer function. In that way you will
never be able to look up E×O⇒V, because you don’t have O. This
is the path that JavaScript has taken, for example, with
WeakMap
and
FinalizationRegistry.

However if you allow for resuscitation, for example by passing
finalizable objects as an argument to finalizers, I am not sure that
there is an optimal answer. Recall that with resuscitation, the trace
proceeds in three phases: first trace the graph, then compute and
enqueue the finalizables, then trace the finalizables. When do you
perform the conjunction for the ephemeron trace? You could do so after
the initial trace, which might augment the live set, protecting some
objects from finalization, but possibly missing ephemeron associations
added in the later trace of finalizable objects. Or you could trace
ephemerons at the very end, preserving all associations for finalizable
objects (and their referents), which would allow more objects to be
finalized at the same time.

Probably if you trace ephemerons early you will also want to trace them
later, as you would do so because you think ephemeron associations are
important, as you want them to prevent objects from being finalized, and
it would be weird if they were not present for finalizable objects.
This adds more serialization to the trace algorithm, though:

  1. (Add finalizers to the root set?)

  2. Trace from the roots

  3. Trace ephemerons?

  4. Compute finalizables

  5. Trace finalizables (and finalizer closures if not done in 1)

  6. Trace ephemerons again?

These last few paragraphs are the reason for today’s post. It’s not
clear to me that there is an optimal way to compose ephemerons and
finalizers in the presence of resuscitation. If you add finalizers to
the root set, you might prevent objects from being collected. If you
defer them until later, you lose the optimization that you can skip
steps 5 and 6 if there are no finalizables. If you trace
(not-yet-visited) ephemerons twice, that’s overhead; if you trace them
only once, the user could get what they perceive as premature
finalization of otherwise reachable objects.

In Guile I think I am going to try to add finalizers to the root set,
pass the finalizable to the finalizer as an argument, and trace
ephemerons twice if there are finalizable objects. I think this wil
minimize incoming bug reports. I am bummed though that I can’t
eliminate them by construction.

Until next time, happy hacking!

If one GUI’s not enough for your SPARC workstation, try four

Posted on November 1, 2022 by Michael G
This is a 1990 Solbourne Computer S3000 all-in-one workstation based around the 33MHz Panasonic MN10501, irreverently code-named the Kick-Ass Processor or KAP. It is slightly faster than, and the S3000 and the related S4000 and later S4000DX/S4100 directly competed with, the original gangsta 1989 Sun SPARCstation and SPARCstation 1+. Solbourne was an early SPARC innovator through majority owner Matsushita, who was a SPARC licensee in competition with Fujitsu, and actually were the first to introduce multiprocessing to the SPARC ecosystem years before Sun themselves did. To do this and maintain compatibility, Solbourne licensed SunOS 4.x from Sun and rebadged it as OS/MP with support for SMP as well as their custom MMU and fixes for various irregularities in KAP, which due to those bugs was effectively limited to uniprocessor implementations. Their larger SMP systems used Fujitsu (ironically), Weitek and Texas Instruments CPUs; I have a Series5 chassis and a whole bunch of KBus cards Al Kossow gave me that I’ve got to assemble into a working system one of these days. And it turns out that particular computing environment was really the intersection point for a lot of early GUI efforts, which were built and run on Sun workstations and thus will also run on the Solbourne. With some thought, deft juggling of PATH and LD_LIBRARY_PATH and a little bit of shell scripting, it’s possible to create a single system that can run a whole bunch of them. That’s exactly what reykjavik, this S3000, will be doing. This is by far the coolest thing I’ve read and learned about in a long, long time. This is an amazing source of information and collection of screenshots and explanations.

What is IDE – Python 3 Ultimate Guide 2022

Posted on October 31, 2022 by Michael G

Video by via Dailymotion Source What is IDE python Python 3 Ultimate Guide 2022 Go to Source

Lancelot Mobile legend baruu op opnya nii GAES!!!

Posted on October 31, 2022 by Michael G

Video by via Dailymotion Source no komen dah pokoknya untuk patch seiya ini lancelot sering banget dipakai Go to Source

Project Zero: Mask of the Lunar Eclipse – Trailer Gameplay

Posted on October 31, 2022 by Michael G

Video by via Dailymotion Source Go to Source

Johnny Arcilla, nasungkit ang ikasampung titulo sa PCA Open Men’s Single event

Posted on October 31, 2022 by Michael G

Video by via Dailymotion Source Johnny Arcilla, nasungkit ang ikasampung titulo sa PCA Open Men’s Single event Go to Source

  • Previous
  • 1
  • …
  • 1,348
  • 1,349
  • 1,350
  • 1,351
  • 1,352
  • 1,353
  • 1,354
  • …
  • 1,531
  • Next

Recent Posts

  • [TUT] LoRa & LoRaWAN – MikroTik wAP LR8 kit mit The Things Network verbinden [4K | DE]
  • Mercado aguarda Powell e olha Trump, dados e Haddad | MINUTO TOURO DE OURO – 11/02/25
  • Dan Levy Gets Candid About Learning How To Act Differently After Schitt’s Creek: ‘It’s Physically…
  • Building a Rock Shelter & Overnight Stay in Heavy Snow 🏕️⛰️
  • Les milliardaires Elon Musk et Xavier Niel s’insultent copieusement

Categories

  • Android
  • Linux
  • News
  • Open Source
©2025 Open World News | Powered by Superb Themes
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept All”, you consent to the use of ALL the cookies. However, you may visit "Cookie Settings" to provide a controlled consent.
Cookie SettingsAccept All
Manage consent

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
CookieDurationDescription
cookielawinfo-checkbox-analytics11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional11 monthsThe cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy11 monthsThe cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytics
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
Others
Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.
SAVE & ACCEPT