Programming/Development: Dirk Eddelbuettel, Dependencies and Python
-
A small Armadillo bugfix upstream update 9.800.3 came out a few days ago. The changes, summarised by Conrad in email to me (and for once not yet on the arma site are fixes for matrix row iterators, better detection of non-hermitian matrices by eig_sym(), inv_sympd(), chol(), expmat_sym() and miscellaneous minor fixes. It also contains a bug fix by Christian Gunning to his sample() implementation.
Armadillo is a powerful and expressive C++ template library for linear algebra aiming towards a good balance between speed and ease of use with a syntax deliberately close to a Matlab. RcppArmadillo integrates this library with the R environment and language–and is widely used by (currently) 679 other packages on CRAN.
-
A new version, now at 0.2.1, of the random-number generator tester RDieHarder (based on the DieHarder suite developed / maintained by Robert Brown with contributions by David Bauer and myself) is now on CRAN.
This version has only internal changes. Brian Ripley, tireless as always, is testing the impact of gcc 10 on CRAN code and found that the ‘to-be-default’ option -fno-common throws off a few (older) C code bases, this one (which is indeed old) included. So in a nutshell, we declared all global variables extern and defined them once and only once in new file globals.c. Needless to say, this affects the buildability options. In the past we used to rely on an external library libdieharder (which e.g. I had put together for Debian) but we now just build everything internally in the package.
-
Using dependencies is one of the main problems in software development today. It has become even more complicated with the recent emergence of new programming languages and the need to combine them with existing programs. Most discussion about it has been informal and high level, so let's see if we can make it more disciplined and how different dependency approaches work.
What do we mean when we say "work"?
In this post we are going to use the word "work" in a very specific way. A dependency application is said to work if and only if we can take two separate code projects where one uses the other and use them together without needing to write special case code. That is, we should be able to snap the two projects together like Lego. If this can be done to arbitrary projects with a success rate of more than 95%, then the approach can be said to work.
It should be especially noted that "I tried this with two trivial helloworld projects and it worked for me" does not fulfill the requirements of working. Sadly this line of reasoning is used all too often in online dependency discussions, but it is not a response that holds any weight. Any approach that has not been tested with at least tens (preferably hundreds) of packages does not have enough real world usage experience to be taken seriously.
-
I’ve been scared of monads ever since I first heard of them. So many references to burritos, or nuclear waste containers, or some other analogy that didn’t make sense to me. So if you’re scared of monads too, maybe my take on what a monad is will help.
-
Open source has permeated much of the software industry. What about health care? This highly regulated and important industry might seem to be the domain of huge specialized software companies.
-
I love this drawing! I’ve always been charmed by cartoonists’ ability to capture an essence in a seemingly simple drawing. Objects are reduced to stereotypes, but with some whimsy thrown in. Ben has always had this gift: to create just the right stroke to perfectly express an attitude or feeling.
Here Sleepy is snug in his bed, covered by a blanket. Even in his custom bed, he’s too long to fit, but he’s comfortable. The pillow isn’t shaped like a real pillow, but it’s exactly our cartoon Platonic ideal of a pillow.
-
Here is a quick guide on Python’s random number. You can always refer to it whenever you need to generate a random number in your programs.
Python has a built-in random module for this purpose. It exposes several methods such as randrange(), randint(), random(), seed(), uniform(), etc. You can call any of these functions to generate a Python random number.
Usually, a random number is an integer, but you can generate float random also. However, you first need to understand the context as a programmer and then pick the right function to use.
-
With an old Mac I have lying around at home and free web-based services, I’ve setup a simple app that fetches some data from an external service (YNAB) in order to run some daily budget calculations that I used to calculate manually for a long time. The output of my app is then sent back to my phone within seconds so I can trigger it from anywhere. I wanted to share the approach I’m using which has cost me nothing.
This (obviously) isn’t an approach that should be used for large scale applications or anything other than pet projects. I just wanted to highlight how simple it can be using existing free tools. There are plenty of low cost, production ready, and scalable options out there (like AWS Lambda) if you prefer to start with that approach.
My app is written in Python and served via Flask to a local endpoint (http://localhost:5000) which ngrok points to. I then have a IFTTT webhook hitting the Ngrok URL after clicking an IFTTT button widget from my phone. The app ends up broadcasting the output to my Slack account so I end up getting a push notification on my phone containing the app output within seconds of hitting the button:
-
Stuck for what to buy your friends and family this Christmas? Whether you’re looking to introduce someone to Raspberry Pi and coding, or trying to find the perfect gift for the tech-mad hobbyist in your life, our Christmas Shopping Guide 2019 will help you complete your shopping list. So, let’s get started…
| Some Free Sticky Notes Applications For Ubuntu Linux!
Sticky notes application is one application that looks trivial but is very useful. This application is usually used to note something. We can choose several Sticky Notes applications below to be used on Ubuntu and other linux distributions!.
|
Graphics: RADV, Wayland's Weston 8.0 Reaches Alpha, Mesa 20.0
-
The Valve-backed "ACO" compiler back-end for the open-source Radeon "RADV" Vulkan driver has added support now for AMD GCN 1.1 "Sea Islands" graphics cards.
Sea Islands includes the Radeon Rx 200 series with the R7 260/260X/290/295 series and these 2nd Gen GCN GPUs also ended up in the Radeon HD 7790, Radeon HD 8770, Radeon R7 360, Radeon R9 390/390X, and Radeon RX 455. Up to now the ACO compiler back-end has only supported GCN1.2/GFX8 and newer but with the latest Mesa 20.0-devel code as of today in Mesa Git there is now ACO support for GCN 1.1 Sea Islands.
-
Weston 8.0 is another significant update for this Wayland reference compositor in it offers EGL_KHR_partial_update support to reduce GPU vRAM usage on supported drivers/GPUs thanks to handling partial screen updates, support for building the DRM back-end without Mesa's GBM, greater hardware planes usage, the Weston headless back-end now supports OpenGL, a direct display extension, HDCP support in the DRM back-end, and various other improvements / features.
-
This is the alpha release for weston 8.0. Here is a highlight of the
main new features:
- DRM hardware planes should be used more effectively
- Headless backend now supports OpenGL
- DRM backend can now be built without GBM
- EGL_KHR_partial_update is now used when available, reducing memory
bandwidth usage on some GPUs
- Logging framework improvements
- Documentation for weston can now be built
A lot of fixes have been merged too. Thanks to all contributors!
Full commit history below.
Adam Jackson (5):
simple-dmabuf-egl: Allow QueryDmaBufModifiers to report no modifiers
gl-renderer: Fix possible memory leak when no dmabuf modifers are supported
libweston: Fix integer underflow in weston_layer_mask_is_infinite
image-loader: Fix undefined left shift in premultiply_data
tests: Fix undefined left shift in internal-screenshot-test
Ankit Nautiyal (6):
backend-drm: Add support for content-protection
libweston: Add functions to modify disable_planes counter for an output
libweston: Add function to schedule idle task for updating surface protection
libweston: Notify the client, when output recording is started/stopped
man: Declare drm-backend support for HDCP
backend-drm: Check for HDCP Content Type property before setting
Daniel Stone (8):
renderer-gl: Assert function presence matches extensions
remoting: Use DRM FourCC formats instead of GBM formats
Revert "backend-drm: Teach drm_property_info_populate() to retrieve range values"
config-parser: Export get_full_path and destroy
backend-drm: Use aspect-ratio bit definitions from libdrm
config-parser: Make get_bool be bool
tests/config-parser: Remove useless duplicate test
option-parser: Make bools boolean
Drew DeVault (1):
simple-dmabuf-egl: update to xdg-shell stable
Eero Tamminen (1):
Add include for missing symbols
Emmanuel Gil Peyrot (1):
shared: Use memfd_create() when available
Harish Krupo (3):
gl-renderer: Censor protected views when output is recorded
clients/window: Add viewport destination support
desktop-shell: Set 1x1 buffers for solid-color backgrounds
Jeffy Chen (2):
clients: Drop corresponding touch points when destroying windows
clients: Add more sanity checks to catch destroyed window
Leandro Ribeiro (11):
build: bump libdrm requirement to newer version (2.4.83)
backend-drm: remove unecessary ifdef checks
backend-drm: remove unnecessary ifdefs
move frame_signal emission to weston_output_repaint()
screenshooter: stop using frame_signal void *data parameter to get weston_output
tests: stop using frame_signal 'void *data' argument to get weston_output
renderer: change frame_signal emission to pass previous_damage as data argument
screenshooter: get previous_damage from data argument instead of weston_output
screen-share: get previous_damage from data argument instead of weston_output
Revert "move frame_signal emission to weston_output_repaint()"
libweston: remove previous_damage from struct weston_output
Link Mauve (1):
xwayland: Remove unused variable
Loïc Yhuel (1):
libweston: fix possible crash after a view is removed the layer
Marius Vlad (53):
weston-log: s/scope/sub, leftover from the logging framework
libweston: Fix rename of weston_compositor_destroy() reference
weston-log: 'new_subscriber' is actually 'new_subscription'
weston-log: Add 'destroy_subscription' callback for the subscription
weston-log-internal: Allow to hang-off data over the subscription
weston-log: Add a subscription iterator
libweston: Clean-up timeline to make room for a new approach
libweston: Introduce timeline subscription and timeline subscription object
libweston: Create the 'timeline' scope
libweston: Convert timeline points to use the timeline scope
libweston: Notify timeline of object modification
libweston: Remove timeline-object and clean-up
doc/sphinx: Add some documentation about timeline points
compositor: Allow protocol to be displayed when asked for, even if we're not supplying debug argument
libweston: Init weston_output's 'destroy_signal' before timeline has a chance to emit a
compositor: Pass the entire string in one-shot when writting logger data
weston-log: Avoid prefix-matching the scope name when checking for a
backend-drm: Teach drm_property_info_populate() to retrieve range values
backend-drm: Teach drm_property_info_populate() to retrieve range values
backend-drm: Add zpos DRM-property
backend-drm: Add a helper to display plane type as a 'string'
backend-drm: Hard-code zpos values if HW doesn't exposes them
libweston: Add a new helper weston_view_has_valid_buffer
libweston: Add a new helper to check if the view spawns the entire
backend-drm: Construct a zpos candidate list of planes
backend-drm: Place pixel format checks for the overlay plane in its own
backend-drm: Place pixel format checks for the cursor plane in its own
backend-drm: Check pixel format before constructing the zpos candidate list
backend-drm: Allow for views to reach overlays/underlays planes
backend-drm: Pass the plane to prepare_overlay_view
backend-drm: Pass the drm_fb to each prepare_overlay/scanout_view functions
backend-drm: Move plane's availability in drm_output_try_view_on_plane()
backend-drm: Print whenever a view will reach the renderer region
backend-drm: Print whenever a view could not placed on the primary due to
compositor: Fix some warning when passing debugoptimized to meson
protocol: Add weston-direct-display extension
libweston: Add weston-direct-display server side implementation
libweston: Add the ability to determine if a dmabuf is scanout-capable
backend-drm: Add dmabuf scan-out check for DRM-backend
renderer-gl: Avoid retrieving the EGL image it direct_display flag was set
renderer-gl: Display a solid shader color when direct-display is in use
clients/simple-dmabuf-egl: Make use of direct-display
clients/simple-dmabuf-drm: Make use of direct-display
backend-drm: Assign the primary plane the lowest zpos value
backend-drm: Skip testing plane state if plane is not enabled
backend-drm: Turn zpos duplicate check into an hard assert
backend-drm: Further checks to skip plane assignment to HW planes
weston-log-flight-rec: Add a global variable to access the ring buffer
weston-log-flight-rec: Don't allow more than one flight recorder to be
weston-log-flight-rec: Fix useless comparison when displaying the
doc/scripts/gdb: Added gdb script to dump contents of the flight recorder
clients/fullscreen: Refuse to resize the surface size when fullscreen'ed
gitlab-ci: Update ci-templates to latest SHA commit
Miguel A. Vico (2):
desktop-shell: Avoid NULL output dereference when getting surface label
compositor: Do not trigger invalid destructors when hotunplugging
Nicholas Niro (2):
backend-drm: Fix for gbm modifiers when they are not available.
backend-drm: Added support for legacy fd_import
Olivier Fourdan (1):
xwm: Use Xwayland allow commits for repaint
Pekka Paalanen (73):
backend-headless: fix comment on use_pixman
backend-headless: refactor into headless_output_enable_pixman
backend-headless: refactor into headless_output_disable_pixman
backend-headless: make renderer type an enum
clients: fix len-string formatting
gl_renderer: remove unused NO_EGL_PLATFORM
gl-renderer: fix typo native_window to native_display
gl-renderer: remove platform_attribs
gl-renderer: remove gl_renderer_display
gl-renderer: remove gl_renderer_output_surface
gl-renderer: remove print_egl_error_state
backend-drm: use format db for fallback too
gl-renderer: move into egl-glue.c
gl_renderer: introduce gl_renderer_get_egl_config()
gl-renderer: use gl_renderer_get_egl_config() for display_create
gl-renderer: do not even pick a config with configless_context
pixel-formats: add RGBA bits and type fields
gl-renderer: use pixel_format_info internally for EGL
gl-renderer: fuzzy EGLConfig matching for non-GBM
backend-wayland: use DRM formats for EGLConfig
backend-x11: use DRM formats for EGLConfig
gl-renderer: remove EGLConfig attributes from API
gl-renderer: configs for pbuffers too
gl-renderer: pbuffer config for non-surfaceless
gl-renderer: prefer the base EGLConfig
gl-renderer: improve get_egl_config errors
gl-renderer: print detailed EGLConfig list
gl-renderer: use EGLConfig printer for window outputs
build: shells do not need matrix.c
build: use dependency for matrix.c
xwm: dnd does not need cairo-util.h
Unify the include style of shared/ headers
build: simplify include_directories
xwm: no need for compositor/weston.h
gl-renderer: display_create needs surface type
gl-renderer: document display_create
gl-renderer: document output_window_create
gl-renderer: add EGL surfaceless platform support
noop-renderer: zero-initialize struct
headless, gl-renderer: support pbuffer outputs
compositor: add use-gl option to headless
gitlab-ci: fix pages
build: separate deps for int and ext libweston users
build: link libm explicitly
build: link libdl explicitly to DRM backend
backend-x11: need libdrm headers in build
build: reduce sub-dependencies of libweston
compositor: turn weston main() into a lib
cms-colord: work around unresolved symbols
backend-rdp: work around unresolved symbols
Link Weston plugins to libexec-weston.so
tests: surface-screenshot needs libshared
build: do not allow unresolved symbols
libweston: drop a misleading dmabuf comment
tests: remove static data from viewporter
tests: remove static data from ivi-layout-test-plugin
tests: remove static data from ivi-shell-app-test
tests: remove static data from ivi-layout-test-client
tests: remove static data from presentation
tests: fix test-shell init error path
ivi-shell: fix init error path
colord: remove destroy listener on clean-up
Use weston_compositor_add_destroy_listener_once() in plugins
libweston: allow double-loading modules
compositor: allow double-loading modules
tests: write image to current directory by default
tests/subsurface-shot: hardcode reference image names
tests: replace fprintf() with testlog()
tests/xwayland: do not call exit(SUCCESS)
tests: rename struct weston_test to weston_test_entry
tests/ivi: rename test_section
tests: drop FAIL_TEST
libweston: do not include weston.h
Sebastian Wick (7):
shared: add read-only anonymous file abstraction
CI: build wayland from source
input: bump wl_seat version to 6
clients/window: bump wl_seat version to 6
input: bump wl_seat version to 7
clients/window: bump wl_seat version to 7
input: use ro_anonymous_file to minimize duplication of keymap files
Simon Ser (4):
build: reopen master for regular development
clients: drop simple-dmabuf-drm
clients: remove leftover from simple-dmabuf-drm
build: bump to version 7.0.91 for the alpha release
Stefan Agner (10):
backend-rdp: don't use shadow buffer for the RDP backend
backend-headless: fix build issue without gl-renderer
clients: avoid build error without gl-renderer
gitlab-ci: add build configuration without gl-renderer
backend-drm: use DRM_ constants everywhere
remoting: make sure GL renderer is enabled
backend-drm: separate out DRM virtual support
backend-drm: make GBM optional
weston-launch: show when a signal is sent to a child
weston-launch: use exec to ensure signal delivery
Veeresh Kadasani (1):
simple-dmabuf-egl: make application generic
Vivek Kasireddy (2):
gl-renderer: Replace EGL_*_WL macros with locally defined enums
gl-renderer: Add support for XYUV format (v2)
sichem (1):
libweston: Bring back 'weston_output_move'
git tag: 7.0.91
-
As part of the ongoing effort for Intel's plans to use their new Gallium3D OpenGL Linux driver by default on next quarter's Mesa 20.0 for Broadwell "Gen8" graphics and newer, another step in that direction was achieved on Friday.
Intel's "Iris" Gallium3D driver is still making good progress in its goal for Mesa 20.0 to switch the default "i965" classic driver to Intel Gallium3D for Broadwell and newer hardware. Earlier this week was adding a build-time option to change the Intel OpenGL driver default so those building from source or distribution vendors can change the default on their own with ease.
| Linux 5.5+ Development
-
When it comes to the storage/file-system changes with the in-development Linux 5.5 kernel one of the most prominent end-user-facing changes is more robust RAID1 for Btrfs with the ability to have three or four copies of the data rather than just two copies, should data safety be of utmost importance and concerned over the possibility of two disks in an array failing.
The Btrfs "RAID1C3" mode was merged last week for this three/four-copy RAID1 while now the GRUB boot-loader has adapted support for these new profiles in order to be able to boot to said arrays.
-
With NFSv4.2 is the server-side copy (SSC) functionality with the Linux 5.5 kernel's NFS client-side support for that support in allowing "inter" copy offloads between different NFS servers.
This support allows for server-to-server efficient file copies with NFSv4.2 SSC rather than first having to copy to the client system. The NFS client changes also introduce new RDMA tracepoints for debugging congestion control and various other fixes.
-
IBM's work from over a year ago in working towards secure virtual machines on POWER hardware is finally coming to fruition with Linux 5.5 due out early next year.
After those original Secure Virtual Machine POWER9 patches were posted last year, the ultravisor / secure bits landed in Linux 5.4 in preparing the foundation. As explained in that earlier article, "The Ultravisor / SVM support is part of IBM's approach for protected computing that is akin to the approaches of Intel SGX and AMD Secure Encrypted Virtualization (SEV). IBM's Ultravisor code runs with higher privileges than the virtualization hypervisor and in turn the virtual machines rely upon IBM Protected Execution for verifying the behavior of the hypervisor/ultravisor."
|
Recent comments
3 hours 24 min ago
4 hours 15 min ago
5 hours 57 min ago
1 day 1 hour ago
1 day 2 hours ago
1 day 2 hours ago
1 day 6 hours ago
1 day 9 hours ago
1 day 9 hours ago
1 day 10 hours ago