69
I Use This!
Very High Activity

News

Analyzed about 7 hours ago. based on code collected about 7 hours ago.
Posted 5 days ago by rajagopalan
Report for Coding Week #2 and #3 Love that your beautiful face is reading my Blog today❤️. First all I woul like to ask sorry to my fans (if any 😅😂) for delaying the posts. Prepare to get blown away🎉🎉💻 Ok let's all jump into the world of webkit shall ... [More] we? History is awesome (just kidding 😉😉) Lets rewind a bit! Getting stuff to compile and build (painful but totally worth it) Oh ya not to mention >:making friends!:< Taming git and messing up with the repo. Phew and finally getting the processes to get to know about each other (duh by making them talk). Living in the Present Ah yes after completing these I feel totally awesome and stepped up the game, And that brings us to the latest progress.... Now the main feature of a browser is to show webpages. hell no!! It has got other cool stuff too. So first I did easy things like showing the status of the progress, keeping track of history( to go back and forward 🚗). For this I had to complete implementing Shared memory :heavenly tones play: . Sounds cool eh? Yes Shared memory is about allocating memory and sharing it with other processes, this is done to keep track of visited links. Yeah that's right we have loaded a blank url completely, I bet your mind is blown 🤯. Oh ya totally forgot about the cool debugging system we use. We use [BeDC](http://pulkomandy.tk/drop/BeDC-1.0.zip) to get outputs from different process in cool colours(its magical trust me or take a look Now before we get to rendering we need to get the webpage of source cause nobody is ever going to load about:blank. duh! So we started working on NetworkProcess and hey I managed to make Http requests using BHttpRequest and BUrlRequest and got the html in bits and pieces. Few parts from the well maintained WebKitLegacy port were stolen and used in NetworkProcess. So we are doing some more work to make it "usable". All pray for it to go really smooth 🤞🏻. Hey look its already Future So once the network process is done completely done. Pulkomandy asked me to play with View and drawing and how the stuff works to get better understanding. Later then try to use Sharable Bitmaps and use the idea on webkit(not as easy it sounds😂🙊). Voila.... That's webkit for you haikuites💕💾😍. That's all for now peeps. Hope you enjoyed reading make sure to drop a comment below stating how you feel about the work and yeah about me too( Hey I can take constructive criticism). Thanks for scrolling By... P.S . By default sorry if my English is funny, cause I speak from my heart and not from my brain(my heart is dumb!). [Less]
Posted 7 days ago by brj
Hello everybody! It’s been a while since my previous post. This post is a short summary of all the work done upto this point. For a detailed report of every day, visit this blog I set up using Blogger. Week 1 As mentioned in my proposal, the target ... [More] for week #1 was document the current btrfs implementation. As part of this, I documented the following classes * Chunk * Inode * BTree * Attribute * AttributeIterator * DirectoryIterator Week #1 went smoothly without any problems. Weeks 2 and 3 The target for weeks 2 and 3 was to implement write support for files that occupy less than one block. However, it turns out that before implementing this, creating files must be implemented. Therefore after a discussion with my mentor (Hy Che) over IRC, I decided to work on implementing file creation first. Also during this week I learnt various advanced git concepts such as stashing, refspecs, rewriting history, filter branch etc. Before Google Summer of Code I just knew the basics like commit, clone and pull. For this used the textbook Pro Git. I would like to thank Haiku for this wonderful opportunity to improve my git skills. I also went through the Haiku API documentation (a.k.a Haiku Book) during these two weeks. In particular, I thoroughly studied the documentation under Storage Kit and Device Drivers. However, not all things went smoothly. In order to learn how to implement file creation, my mentor (Hy Che) suggested that I go through Linux’s btrfs implementation. I spent most of week #3 going through Linux’s btrfs code for creating, modifying, writing and linking files (see Blogger blog for detailed reports, including pseudocode I was able to deduce based on the C code). Even after looking into Linux’s btrfs implementation, I wasn’t confident enough to code up my own implementation. As a result, I might have to do things differently from what I mentioned in my proposal. That brings me to what I’m currently doing - reading up the papers published by Ohad Rodeh on btrfs. So far I’ve read the following papers * B-trees, Shadowing, and Range-operations * B-trees, Shadowing, and Clones * Deferred Reference Counters for Copy-On-Write B-trees I plan on finishing reading BTRFS: The Linux B-tree Filesystem by tomorrow. After reading these papers, I definitely feel more confident about my understanding of btrfs. I will try to finish implementing creating new files by the end of this week. So far the learning curve has been quite steep, if I say so myself. I find GSoC to be both challenging and fun. Once again, I’d like to take a moment to thank the Haiku community for giving me this amazing opportunity. Miscellaneous Link to my proposal Link to blog with daily report [Less]
Posted 16 days ago by waddlesplash
Welcome to the monthly report for May 2019! PulkoMandy is once again busier than usual, so I’m filling in. This report covers hrev53094-hrev53174 (120 commits.) Applications & Libraries korli changed how runtime_loader handles weak symbols to be ... [More] more in line with the behavior of other operating systems. waddlesplash tweaked “strace” to print syscall names plainly, i.e. without the prefixed “kern”. mmu_man committed changes to allow loading the BControlLook from an add-on, and added a setting to the Appearance preferences for it. This allows developers to create their own control theming, as all controls are drawn using this class. A few older changes from oortwijn correcting some corner-cases in USB tablet logic were (finally) committed. Haiku’s malloc implementation, previously based on the (now-ancient, sbrk-based) hoard2, was replaced with rpmalloc, a high-perforance mmap-based allocator. This enables applications on 64-bit Haiku to use more than 1.5GB of RAM, and also provides an across-the-board 10-15% performance improvement, with some use-cases seeing even larger ones. Thanks go to mmlr, PulkoMandy, and waddlesplash for the Haiku-side work on this, and mjansson, the creator of rpmalloc, for being so responsive to feedback! waddlesplash introduced a change to our mmap implementation that will name mmap areas after the object that created them (e.g. “libfreetype.so mmap area”). This may help in debugging. PulkoMandy implemented a few more scrollback-related features in SerialConnect, including “clear”, “reset”, and better window-resizing logic. waddlesplash made the “Disable user add-ons” safe-mode setting block loading dynamic libraries from user-writeable locations altogether, making it possible to e.g. un-brick a Haiku system which has corrupted libraries in non-packaged without having to boot into another partition. pkgman and HaikuDepot now inform the user when a reboot is needed to complete installations, thanks to waddlesplash. Haiku now sports a revamped “crash dialog”, thanks to PulkoMandy, which should be more locale-friendly than the previous one was. Hopefully it will be some time before most users see it… Servers waddlesplash fixed package_daemon to actually return errors on failures to commit transactions, instead of always returning “OK”. This turns a number of cryptic errors (e.g. “Failed to remove transaction directory”) into much more understandable ones (e.g. “package already activated”). Drivers korli made some miscellaneous fixes to the mem driver, which allows (privileged) userland processes to read physical memory. waddlesplash fixed a bug in the Bluetooth driver’s ioctl implementation, so it now works properly again. waddlesplash corrected 64-bit physical address handling in the PCI bus manager, which fixed XHCI on some very recent hardware (“Hades Canyon” NUCs, for instance.) He also refactored parts of the XHCI driver to configure “periodic” endpoints more correctly. waddlesplash merged a memory leak fix from FreeBSD to the kernel WiFi stack, which may also fix some rarer panics. BGA (returning after a long hiatus!) corrected some incorrect behavior in the FreeBSD compatibility layer related to device structure memory, and then some in the PCI memory mapping logic, which fixed ethernet and WiFi on a variety of systems where it was previously broken (including his, of course.) waddlesplash corrected some error checks in the USB stack, which fixed a number of KDLs on device unplug. korli made some changes to the SCSI stack to handle cdrecord and other consumers of the “raw” API better. Kernel waddlesplash made the kernel file-cache do bounds-checking even when in “passthrough” mode, which fixed installation following the changes to make packagefs use the cache in this mode. waddlesplash added some more asserts to the kernel’s mutex implementation, which should change some more deadlock conditions to panics instead. PulkoMandy committed more changes towards SPARC support. The bootloader now starts and begins looking for boot partitions now. Build system Haiku is now built using GCC 8.3 on most architectures! Thanks to mt for helping out with this upgrade by submitting -Werror fixes. kallisti5 made some tweaks and improvements to the bootstrap process following the GCC upgrade. Thanks for reading, and see you next month! [Less]
Posted 21 days ago by rajagopalan
Hello everybody. This is me Rajagopalan working on getting webkit2 on haiku. Previously as you guys know we were trying to get IPC working. Well we have succeeded in that after hitting some obstacles. Message passing should not involve mainloop it ... [More] should be totally dependent on the workqueue only. As the mainloop can be blocked because of JS Execution which leaves slow performance or even crash. Also we stumbled upon an IPC deadlock when we used mainloop (main application loop) as a proxy to send and receive messages. Thanks to BMessenger we were able to send messages to required place without any interference and problems (although we had to use mainloop once to establish connection). The initialization is bit slow although it works good now allowing us to focus on main part (Rendering). Once we could get webkit render on screen we will try perfecting IPC. Currently to pick a right path we want to enable all the asserts in release mode as debug build fails because gcc runs out of memory. So that’s all peeps. Thanks for scrolling by!! [Less]
Posted about 1 month ago by rajagopalan
Introduction: Hello Everybody, I am G.Rajagopalan working on porting webkit2 to haiku as a part of my GSoC project. So here I am to share our experiences and work regarding the project 😄. Bonding Process: I have been with haiku for the past 6 (or 7 ... [More] months I think) which went like a blink of an eye. I can definitely say that it is a memorable journey with Haiku. I owe it to the beautiful and friendly people who work for haiku. My friends circle has definitely increased. So I can concretely conclude the community bonding process is both fruitful and fun ❤😊😄. Work’s Progress: WebKit2 is a very big project hence it deserves lots of love and attention and here we are providing it in small steps. Let me run through the work till date: We got it to compile on Haiku OMG it was such a tedious step but totally worth it! Cleaning up of git history Pulkomandy said that we need to maintain a clean git history if we want our patches to be accepted by the upstream branch. So I had to sharpen my git skills like rebasing, cherry-picking. They sure are scary at first seems fun and interesting after I played with it. Pulkomandy spent a good amount of time rebasing and picking required commits while I create a dummy repo to put my git skills into battle. First things first! WebKit2 follows a multi-process model. So to actually do anything, the process had to be launched. So we used BRoster to launch the executables using their MIME types but, soon realized it is not a good choice hence we changed it to launching by finding the path using the HAIKU way😎🔥. They really have to talk😬🙊 Yes we had to make the Processes talk with each other. So we started fixing the IPC with our native messaging framework. The handlers were attached to the MainLoop(attached to the application’s main looper) and things started to talk for quite a while until we hit on a fact that JS execution may block the MainLoop so its evil to attach it there. Phew an alternate way to make them talk🤞 As Attaching the handlers that receive function calls from other messages to the MainLoop didn’t turn out to be expected. We had to attach it to the WorkQueue’s Looper just like all the other platforms. So currently we have to do extra work to send message from application’s looper to WorkQueue’s looper. Take a look of the rough schema I made for the above plan ✏📝. TL;DR So currently the peek is at fixing the IPC by attaching it to WorkQueue and pray for it to work. return(0); That’s all folks. Hope everybody enjoyed it and sorry if my English is too funny 🤣. Thanks for scrolling by 💻🎉. [Less]
Posted about 1 month ago by rajagopalan
Introduction: Hello Everybody, I am G.Rajagopalan working on porting webkit2 to haiku as a part of my GSoC project. So here I am to share our experiences and work regarding the project 😄. Bonding Process: I have been with haiku for the past 6 (or 7 ... [More] months I think) which went like a blink of an eye. I can definitely say that it is a memorable journey with Haiku. I owe it to the beautiful and friendly people who work for haiku. My friends circle has definitely increased. So I can concretely conclude the community bonding process is both fruitful and fun ❤😊😄. Work’s Progress: WebKit2 is a very big project hence it deserves lots of love and attention and here we are providing it in small steps. Let me run through the work till date: We got it to compile on Haiku OMG it was such a tedious step but totally worth it! Cleaning up of git history Pulkomandy said that we need to maintain a clean git history if we want our patches to be accepted by the upstream branch. So I had to sharpen my git skills like rebasing, cherry-picking. They sure are scary at first seems fun and interesting after I played with it. Pulkomandy spent a good amount of time rebasing and picking required commits while I create a dummy repo to put my git skills into battle. First things first! WebKit2 follows a multi-process model. So to actually do anything, the process had to be launched. So we used BRoster to launch the executables using their MIME types but, soon realized it is not a good choice hence we changed it to launching by finding the path using the HAIKU way😎🔥. They really have to talk😬🙊 Yes we had to make the Processes talk with each other. So we started fixing the IPC with our native messaging framework. The handlers were attached to the MainLoop(attached to the application’s main looper) and things started to talk for quite a while until we hit on a fact that JS execution may block the MainLoop so its evil to attach it there. Phew an alternate way to make them talk🤞 As Attaching the handlers that receive function calls from other messages to the MainLoop didn’t turn out to be expected. We had to attach it to the WorkQueue’s Looper just like all the other platforms. So currently we have to do extra work to send message from application’s looper to WorkQueue’s looper. Take a look of the rough schema I made for the above plan ✏📝. TL;DR So currently the peek is at fixing the IPC by attaching it to WorkQueue and pray for it to work. return(0); That’s all folks. Hope everybody enjoyed it and sorry if my English is too funny 🤣. Thanks for scrolling by 💻🎉. [Less]
Posted about 2 months ago by pulkomandy
Hi there! The selected students for both Outreachy and Google Summer of Code were publiched on Tuesday. This year we will be mentoring 3 students bringing new features to Haiku over the summer. GSoC is a program run and funded by Google, where we ... [More] (and many other open source projects) mentor students over the summer to get them up to speed with contributing. Google gives them a stipend, saving the need for a summer job and allowing them to focus on their work. Outreachy is a similar program run by the Software Freedom Conservancy and funded by various sponsors including Haiku, inc. for the first time this year. Preetpal Kaur will be working on a new preference panel for input devices, replacing the existing touchpad, mouse, keyboard and keymap preferences with a single application. Rajagopalan Gangadharan will be working on getting WebPositive to use the “new” WebKit2 API, allowing to run multi-process webkit (so a crash of one browser tab does not bring down the whole browser) and later on enabling more features such as ad blocking, private browsing, etc. Bharati Ramana Joshi will continue the work on write support for btrfs, bringing another modern filesystem to Haiku and improving interoperability with Linux and ReactOS (the two other OS that already support btrfs out of the box). The Haiku team welcomes these new contributors and wishes them great success on their work! [Less]
Posted about 2 months ago by rajagopalan
BAlert("Hello World","Introducing myself", "Awesome","Cool","Excited",B_SUMMER_IS_FUN); Introduction: I am RAJAGOPALAN GANGADHARAN doing Computer science Engineering in India and a GSOC 2019 participant with aim of porting Webkit2 to Haiku. First ... [More] of all I would like to thank everybody for giving me this wonderful opportunity and I promise to not let the hopes down. I didn’t know much about BeOS until I saw Haiku. Well to be honest I fell in love with the GUI of haiku. The tabs and grouping is really what I wanted, and I was searching my entire life.I am really hoping to see Haiku organization badge in my GitHub profile. About my project: WebKit2 is the latest browser engine and an updated version to the webkit legacy that is being used by our Web+. WebKit2 follows a multi process model so there is no more hangs if something goes wrong as each process performs a separate task UIProcess - Recognize user actions etc., WebProcess - The process that renders stuff., NetworkProcess - The part that actually talks with internet. There are other processes too like extension process which we will come to in a later point of time. Upgrading to web+ to webkit2 means, More speed 🚀 and more reliability 💪🏻 and private browsing, ad blocking many more. I believe I could get the sample minibrowser that uses webkit2 to render a simple HTML page before the end of the program. Project Plan: So my previous work include getting webkit2 to compile on haiku. Created a minibrowser to have a start with. And also started with creating a simple web view to instruct our BView to draw stuff. We have couple of things to fix before it can render that includes IPC(inter process communication) Since webkit uses socket (client server model) and we would like to use our native messaging service BMessage we would have to work on revamping the connection. Coordinated graphics This is the actual part that renders HTML pages, so we would have to use existing parts from legacy port to work with webkit2 port. Conclusion: I would again like to thank everyone for giving me this opportunity and my mentor Pulkomandy for believing in me. That’s all folks! Thank you for reading Hope you enjoyed. Keep checking this space ! P.S. Forgive me if my English is bad 😅 [Less]
Posted about 2 months ago by brj
Introduction Hello, world! As some of you might be aware, I’m one of the students selected for GSoC 2019. My name is Bharathi Ramana Joshi. You may know me as brj, my initials, from the mailing lists and IRC channel. I’m pursuing an underguate ... [More] degree in Computer Science and Engineering from Keshav Memorial Institute of Technology, India. Project: Improving the btrfs filesystem As the title suggests, I shall be working on Haiku’s btrfs implementation for most of the summer. Currently, it is possible to read and write directories but only read from files. By the end of GSoC 2019, I aim to implement file writing. Overview btrfs uses a modified b-tree (without linkage) suitable for high-performance object store that can perform copy-on-write snapshots, while maintaining good concurrency. These modified trees store generic items sorted on a 136-bit key. The first 64 bits of the key are a unique object id, the middle 8 bits are an item type field and the last 64 bits are used in type specific ways. User-visible files and directories are contained in a file system tree. Within each filesystem tree, each file and directory object has an inode item. Within each directory, directory entires appear as directory items, whose right-hand key values are a CRC32C hash of their filename and their data is a location key, or the key of the inode item it points to. File data is kept outside the trees in extents, which are contiguous runs of disk blocks. Extent blocks default to 4KiB in size, do not have headers and contain only file data. Files have extent data items to track the extents which hold their contents. The item’s right-hand key value is the starting byte offset of the extent. The extent allocation tree acts as an allocation map for the file system. Their left-hand and right-hand key values are the starting offsets and lengths of the regions they represent. The filesystem zones its allocated space into block groups, which are variable-sized allocation regions that altrenate successively between preferring metadata extents (tree nodes) and data extents (file contents). The project can be conveniently divided into three parts for the three phases. Phase 1 Small files that occupy less than one block will be packed into the btree inside the extent item. During phase 1, writing will be implemented for such files, along with Copy-on-Write (CoW) logging. Testing will be done using btrfs_shell. This overcomes the tedious task of rebuilding entire source, generating an iso and booting it each time changes are made. Another task during phase 1 would be to properly document the current implementation. Some documentation has already been written during initial contributions. Phase 2 The main task during phase 2 is implementing write supports for large files, albiet without Copy-on-Write de-duplication. Extensive testing using btrfs_shell must be performed with extreme operating parameters. btrfs_shell will have to be modified to perform such testing. Documentation must also be written for all work done upto this point Phase 3 Phase 3 aims at implementing what phase 2 doesn’t - Copy-on-Write. Transaction handling must also be implemented. Testing should be done to make sure transactions are correctly handled and CoW works without any problems. btrfs_shell must be modified appropriately. Finally, documentation should be added, the project should be made more presentable for final evaluation and any left over work must be wrapped up. Miscellaneous I have set up a blog on blogger where I shall be updated my progress on a daily basis, like a diary. My weekly posts on this blog are the crux of all the work done in that week. For more details about my project, see my proposal [Less]
Posted about 2 months ago by pulkomandy
Hi there! We're back for monthly (or almost) reports! I was at the JDLL in early april, and while preparing for that I didn't have time to write a report, and no one else did it. So here we go with a 2 month report, prepare for something a little ... [More] longer than usual. This report covers hrev52945-hrev53094. Code cleanups mt fixed various places where -Werror=class-memaccess was breaking the build. These are cases where we initialize a C++ object with memset, which is normally not allowed. Usually this does not result in too much problems, but it could bite us if we made the objects more complex later on. He also reviewed several of the results from the PVS studio analysis, and made fixes for the ones that pointed to actual bugs. waddlesplash fixed various issues related to endianness management, unused fields, a few cleanups in the buildsystem, and a lot more. He also removed some remaining support for building parts of our code for BeOS or Zeta, which we don't really need anymore, and removed support for "version 1" hpkg files (we have never released any version of Haiku using it, the current format is version 2). Lee Mon ran parts of the code through cppcheck and fixed various warning found by the tool. New architectures PulkoMandy got the sparc build as far as bootstrapping a complete boot image. The next step is getting the bootloader to actually run on the hardware. Kallisti5 made some progress on getting the RISC-V build up and running as well, work is currently in progress to backport RISC-V floating point math support into our C library. The work on both architecture also led to cleanup of various endianness problems, as well as merging some old patches improving PowerPC support, and a cleanup of the floating point support in the C library - but much remains to be done. Waddlesplash was also involved in reviewing the changes and cleaning up the use of byte swap functions to have a single implementation for them. Along the way, fixes were also made to the bootstrapping support, making it a little easier to use. This may be needed whenever we decide to have a major ABI breakage and need to rebuild all packages from scratch. mmu_man made it easier to build "big endian BFS" for x86 machines. This makes it possible to mount PowerPC formatted BFS volumes on an x86 machine. For performance reasons, the Be filesystem uses the native endianness of the machine it runs on, and therefore there are two variants of the on-disk format. Command line tools Andrew Lindesay fixed the output of pkgman --help. mmu_man added support for webloc files to urlwrapper. The in-tree implementation of uptime was broken, we are now using the one from GNU coreutils. Drivers Greg Crain improved timeout management in the XHCI driver. Waddlesplash also put a lot of work into XHCI, fixing many issues and reworking large parts of the driver, making it behave a lot better on most machines. Thanks to Waddlesplash we also now have an NVMe driver, based on the existing libnvme library. NVMe is a new way to connect SSD disks directly to the PCIe bus, avoidsing much of the overhead and complexity of SATA. Waddlesplash made the "disable user add-ons" setting also ignore files in non-packaged, making it less risky and easier to test drivers by putting them there. He also fixed an issue in the BIOS bootloader, which would confuse some BIOS versions by adding an extra field in requests to read data from disk. This should fix booting with these picky BIOS implementations. Waddlesplash also fixed the usb_audio driver for SMAP, so at least it won't immediately trigger a kernel panic. korli made minor fixes to the HDA driver. PulkoMandy fixed timeout handling in the DHCP client, which would have trouble synchronizing in some cases as it would timeout immediately and send a lot of bogus packets to the DHCP server. This was especially visible on busy public networks. SuperPower fixed the intel_extreme driver for the GMA960 chipset, where there was some confusion about the use of video modes extracted directly from the video card BIOS. Calvin Hill added missing USB IDs in the Wacom tablet driver. Les De Ridder and Hy Che worked on the btrfs code, cleaning various parts of the code and adding initial support for initializing btrfs volumes. mmu_man added a work in progress driver for TUN/TAP devices, which will eventually allow support for VPNs, as well as sharing network interfaces with virtual machines running inside Haiku, when we get to that. jessicah reworked the driver loading code in the bootloader, fixing a compatibility issue with the UEFI implementation in VirtualBox. waddlesplash synchronized some network drivers with the FreeBSD implementations. Tests Often an overlooked part of our codebase, tests are very useful to make sure things continue working as expected. They allow to cover specific use cases for the API, hopefully in a way that makes them easy to debug. korli reworked some tests for dlopen support in runtime_loader. POSIX compatibility korli added various common pthread API extensions: pthread_attr_getstack, pthread_attr_setstack, pthread_getattr_np. These will ease porting of software written on Linux or BSD, since we now have similar APIs. He also worked on improving fcntl and in particular the support for duplicating file descriptors. Applications Andrew Lindesay made some fixes to the buildsystem, making sure a version of python is available before trying to use it. mmu_man re-added AutoRaise to the image, it's a DeskBar add-on that will automatically raise the active window to front after a short delay. This can be useful for focus-follow-mouse users who do not want to manually raise windows. CodeForEvolution added a check in BPackageRoster to determine if a reboot is needed after updating packages. SoftwareUpdater can now make use of this and notify the user accordingly. Jakob L Kreuze added support for M3U playlist in MediaPlayer. Humdinger fixed some unusable keyboard shortcuts in Magnifier (they were in the user guide, but did not work. This shows the need for a QA team doing regression tests). Waddlesplash fixed the launch process dependencies so that the system clock is synchronized as soon as the network is up. No more offset clocks! mmu_man made it possible to run multiple instances of GLTeapot. If you were looking for an exciting demo of our software 3D rendering capabilities, this is it. Some very old patches from Dancsò Ròbert were finally merged, bringing some new functionalities to DriveSetup. These were submitted as a large patch with many features and also several coding style violations. PulkoMandy split it into smaller parts to ease reviewing. If there is a single disk on the system, it is now enabled by default. A new menu allows to easily open a partition in DiskProbe for inspection. John Scipione added right click and middle click emulation to the default window behavior, making it easier for users with 2 or 1 button mouse and touchpads to get around the system. Preetpal Kaur made the touchpad preferences disable itself when there is no compatible touchpad found on the system. Debugging tools mmu_man added a "catarea" tool, allowing to peek at the content of a particular area. Areas are shared memory allocations, to which any program may get access, given that it knows the identifier for the specific area. This allows sharing data between running programs in a very efficient way, since no copy of the data is needed. Waddlesplash added and reworked various error checks in the kernel locking primitives, searching for a hard deadlock of the system where it wouldn't even be possible to enter KDL. [Less]