138 research outputs found

    Practical API Protocol Checking with Access Permissions

    Full text link
    Reusable APIs often define usage protocols. We previously developed a sound modular type system that checks compliance with typestate-based protocols while affording a great deal of aliasing flexibility. We also developed Plural, a prototype tool that embodies our approach as an automated static analysis and includes several extensions we found useful in practice. This paper evaluates our approach along the following dimensions: (1) We report on experience in specifying relevant usage rules for a large Java standard API with our approach. We also specify several other Java APIs and identify recurring patterns. (2) We summarize two case studies in verifying third-party open-source code bases with few false positives using our tool. We discuss how tool shortcomings can be addressed either with code refactorings or extensions to the tool itself. These results indicate that our approach can be used to specify and enforce real API protocols in practice

    Channels as Objects in Concurrent Object-Oriented Programming

    Full text link
    There is often a sort of a protocol associated to each class, stating when and how certain methods should be called. Given that this protocol is, if at all, described in the documentation accompanying the class, current mainstream object-oriented languages cannot provide for the verification of client code adherence against the sought class behaviour. We have defined a class-based concurrent object-oriented language that formalises such protocols in the form of usage types. Usage types are attached to class definitions, allowing for the specification of (1) the available methods, (2) the tests clients must perform on the result of methods, and (3) the object status - linear or shared - all of which depend on the object's state. Our work extends the recent approach on modular session types by eliminating channel operations, and defining the method call as the single communication primitive in both sequential and concurrent settings. In contrast to previous works, we define a single category for objects, instead of distinct categories for linear and for shared objects, and let linear objects evolve into shared ones. We introduce a standard sync qualifier to prevent thread interference in certain operations on shared objects. We formalise the language syntax, the operational semantics, and a type system that enforces by static typing that methods are called only when available, and by a single client if so specified in the usage type. We illustrate the language via a complete example.Comment: In Proceedings PLACES 2010, arXiv:1110.385

    Stabilization of ribozyme-like cis-noncoding rRNAs induces apoptotic and nonapoptotic death in lung cells

    Get PDF
    Bidirectional non-protein-coding RNAs are ubiquitously transcribed from the genome. Convergent sense and antisense transcripts may regulate each other. Here, we examined the convergent cis-noncoding rRNAs (nc-rRNAs) in A5 and E9 lung cancer models. Sense nc-rRNAs extending from rDNA intergenic region to internal transcribed spacer of around 10 kb in length were identified. nc-rRNAs in sense direction exhibited in vitro characteristics of ribozymes, namely, degradation upon incubation with MgCl2 and stabilization by complementary oligonucleotides. Detection of endogenous cleavage-ligation products carrying internal deletion of hundreds to thousands nucleotides by massively parallel sequencing confirmed the catalytic properties. Transfection of oligonucleotides pairing with antisense nc-rRNAs stabilized both target and complementary transcripts, perturbed rRNA biogenesis, and induced massive cell death via apoptotic and/or nonapoptotic mechanisms depending on cell type and treatment. Oligonucleotides targeting cellular sense transcripts are less responsive. Spontaneously detached cells, though rare, also showed accumulation of nc-rRNAs and perturbation of rRNA biogenesis. Direct participation of nc-rRNAs in apoptotic and nonapoptotic death was demonstrated by transfection of synthetic nc-rRNAs encompassing the rDNA promoter. In sum, convergent cis-nc-rRNAs follow a feed-forward mechanism to regulate each other and rRNA biogenesis. This opens an opportunity to disrupt rRNA biogenesis, commonly upregulated in cancers, via inhibition of ribozyme-like activities in nc-rRNAs

    Poly(ADP-Ribose) Polymerase 1 (PARP-1) Regulates Ribosomal Biogenesis in Drosophila Nucleoli

    Get PDF
    Poly(ADP-ribose) polymerase 1 (PARP1), a nuclear protein, utilizes NAD to synthesize poly(AD-Pribose) (pADPr), resulting in both automodification and the modification of acceptor proteins. Substantial amounts of PARP1 and pADPr (up to 50%) are localized to the nucleolus, a subnuclear organelle known as a region for ribosome biogenesis and maturation. At present, the functional significance of PARP1 protein inside the nucleolus remains unclear. Using PARP1 mutants, we investigated the function of PARP1, pADPr, and PARP1-interacting proteins in the maintenance of nucleolus structure and functions. Our analysis shows that disruption of PARP1 enzymatic activity caused nucleolar disintegration and aberrant localization of nucleolar-specific proteins. Additionally, PARP1 mutants have increased accumulation of rRNA intermediates and a decrease in ribosome levels. Together, our data suggests that PARP1 enzymatic activity is required for targeting nucleolar proteins to the proximity of precursor rRNA; hence, PARP1 controls precursor rRNA processing, post-transcriptional modification, and pre-ribosome assembly. Based on these findings, we propose a model that explains how PARP1 activity impacts nucleolar functions and, consequently, ribosomal biogenesis

    Differences in the semantics of prosocial words: an exploration of compassion and kindness

    Get PDF
    The study of prosocial behaviour has accelerated greatly in the last 20 years. Researchers are exploring different domains of prosocial behaviour such as compassion, kindness, caring, cooperation, empathy, sympathy, love, altruism and morality. While these constructs can overlap, and are sometimes used interchangeably, they also have distinctive features that require careful elucidation. This paper discusses some of the controversies and complexities of describing different (prosocial) mental states, followed by a study investigating the differences between two related prosocial concepts: compassion and kindness. For the study, a scenario-based questionnaire was developed to assess the degree to which a student (N = 222) and a community (N = 112) sample judged scenarios in terms of compassion or kindness. Subsequently, participants rated emotions (e.g. sadness, anxiety, anger, disgust, joy) associated with each scenario. Both groups clearly distinguished kindness from compassion in the scenarios on the basis of suffering. In addition, participants rated compassion-based scenarios as significantly higher on sadness, anger, anxiety and disgust, whereas kindness-based scenarios had higher levels of joy. As a follow-up, a further sample (29 male, 63 female) also rated compassionate scenarios as involving significantly more suffering compared to the kindness scenarios. Although overlapping concepts, compassion and kindness are clearly understood as different processes with different foci, competencies and emotion textures. This has implications for research in prosocial behaviour, and the cultivation of kindness and compassion for psychotherapy and in general.N/

    Mapping H4K20me3 onto the chromatin landscape of senescent cells indicates a function in control of cell senescence and tumor suppression through preservation of genetic and epigenetic stability

    Get PDF
    Background: Histone modification H4K20me3 and its methyltransferase SUV420H2 have been implicated in suppression of tumorigenesis. The underlying mechanism is unclear, although H4K20me3 abundance increases during cellular senescence, a stable proliferation arrest and tumor suppressor process, triggered by diverse molecular cues, including activated oncogenes. Here, we investigate the function of H4K20me3 in senescence and tumor suppression. Results: Using immunofluorescence and ChIP-seq we determine the distribution of H4K20me3 in proliferating and senescent human cells. Altered H4K20me3 in senescence is coupled to H4K16ac and DNA methylation changes in senescence. In senescent cells, H4K20me3 is especially enriched at DNA sequences contained within specialized domains of senescence-associated heterochromatin foci (SAHF), as well as specific families of non-genic and genic repeats. Altered H4K20me3 does not correlate strongly with changes in gene expression between proliferating and senescent cells; however, in senescent cells, but not proliferating cells, H4K20me3 enrichment at gene bodies correlates inversely with gene expression, reflecting de novo accumulation of H4K20me3 at repressed genes in senescent cells, including at genes also repressed in proliferating cells. Although elevated SUV420H2 upregulates H4K20me3, this does not accelerate senescence of primary human cells. However, elevated SUV420H2/H4K20me3 reinforces oncogene-induced senescence-associated proliferation arrest and slows tumorigenesis in vivo. Conclusions: These results corroborate a role for chromatin in underpinning the senescence phenotype but do not support a major role for H4K20me3 in initiation of senescence. Rather, we speculate that H4K20me3 plays a role in heterochromatinization and stabilization of the epigenome and genome of pre-malignant, oncogene-expressing senescent cells, thereby suppressing epigenetic and genetic instability and contributing to long-term senescence-mediated tumor suppression

    Capabilities for Uniqueness and Borrowing

    Get PDF
    An important application of unique object references is safe and efficient message passing in concurrent object-oriented programming. However, to prevent the ill effects of aliasing, practical systems often severely restrict the shape of messages passed by reference. Moreover, the problematic interplay between destructive reads--often used to implement unique references--and temporary aliasing through "borrowed" references is exacerbated in a concurrent setting, increasing the potential for unpredictable run-time errors. This paper introduces a new approach to uniqueness. The idea is to use capabilities for enforcing both at-most-once consumption of unique references, and a flexible notion of uniqueness. The main novelty of our approach is a model of uniqueness and borrowing based on simple, unstructured capabilities. The advantages are: first, it provides simple foundations for uniqueness and borrowing. Second, it can be formalized using a relatively simple type system, for which we provide a complete soundness proof. Third, it avoids common problems involving borrowing and destructive reads, since unique references subsume borrowed references. We have implemented our type system as an extension to Scala. Practical experience suggests that our system allows type checking real-world actor-based concurrent programs with only a small number of additional type annotations
    • 

    corecore